繁体   English   中英

模型在不同坐标系下的OpenGL ES如何转换?

[英]Model in different coordinate-system OpenGL ES how to convert?

假设我有一个具有以下两个三角形的元素:

<triangle A="1018;655;0" B="1018;655;61,5" C="1030;655;61,5" />
<triangle A="1030;655;0" B="1077;655;0" C="1030;655;61,5" />

每个三角形都有3个顶点,这些顶点的值介于0到1200之间。

现在,我想在OpenGL ES 2中可视化该元素。

我目前正在做的是寻找最大的值,然后将所有元素除以该值,以得到介于0和1之间的新值。有了每个三角形的这个值,我的渲染器就可以可视化对象。

我认为这不是正确的方法。

我得到以下矩阵:模型,视图,投影。 我的计算机图形学课程很早以前,但是不可能使用默认的三角形值并进行从对象空间到视图/世界空间的特定转换吗?

有什么好的解决方案吗? 还是我必须为对象提供0到1之间的值,而我的方法才是正确的方法。

这取决于您所使用的内容。 如果使用glOrtho (与glFrustum相对),您要做的就是插入较大的值作为参数,通常使用屏幕坐标。

至于平截头体(在您的情况下更有可能),您仍然可以做同样的事情,但是您将更改视场(您将增加其角度)。 因此,要将它们放在一起,您应该缩放模型或简单地将其放远。 请注意,通过将其放远,您可能需要在视锥调用中增加zFar参数。

通常,对于您的场景,获得的模型过大或过小是很常见的,但这不是简单的矩阵调用无法处理的。 您要做的就是在绘制模型之前下推模型矩阵并对其进行缩放(glScalef),并在绘制调用之后将其弹出。 这样,您应该可以获得理想的效果,并且其余代码完整无缺。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM