假设我有一个包含以下两个三角形的元素:
<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之间的值,而我的方法是正确的方法。
发布于 2013-12-12 10:28:48
这在一定程度上取决于您使用的是什么。如果您使用glOrtho (相对于glFrustum),您所需要做的就是插入较大的值作为参数,屏幕坐标是常用的。
至于结果(在你的情况下更有可能),你仍然可以做同样的事情,但是你会改变视野(你会增加它的角度)。因此,为了保持所有的整体,你要么缩放模型,要么简单地把它放远。请注意,通过将它放置在很远的地方,您可能需要在播客调用中增加zFar参数。
通常情况下,对于场景来说,您得到的模型要么太大要么太小,但这不是简单的矩阵调用所不能处理的。您所要做的就是在绘制模型之前将模型矩阵和比例尺(glScalef)向下推,然后在绘图调用之后弹出它。通过这种方式,您应该可以获得所需的效果,而代码的其余部分是完整的。
https://stackoverflow.com/questions/20535395
复制相似问题