我正在学习OpenGL,我对设置顶点数据位置有些困惑。
例如,据我了解,我想绘制一个矩形尺寸300mm x 300mm,我可以假设1个openGL单元= 1 mm,然后我设置了以下顶点数据:
data = [-0.5, 0.5, # top left
-0.5, -0.5, # bottom left
0.5, 0.5, # top right
0.5, -0.5] # bottom right
因此,矩形大小为1个OpenGL单元或1mm(如果没有错),然后使用模型矩阵将其缩放300。
我可以这样设置:
data = [ 0.0, 300.0, # top left
0.0, 0.0, # bottom left
300.0, 300.0, # top right
300.0, 0.0] # bottom right
矩形尺寸为300个OpenGL单元或300mm。
我不知道哪种方法是正确的。
你能把我指向正确的方向。
谢谢
OpenGL坐标没有"单位"。
在归一化的设备坐标(NDC)中,在2x2x2框中(或2x2x1)中以归一化的设备坐标(NDC)进行了栅栏,以原点为中心,是可以映射到窗口坐标的片段,并将写入Framebuffer(假设他们通过了深度测试)。您要做什么才能获得碎片。
从您的问题中,我了解您正在谈论拼字图投影,在这种情况下,请检查您的拼字图投影矩阵,它定义了"屏幕边缘"的坐标。因此,顶点坐标长度的实际单位是您的投影和物理屏幕大小的函数。
我强烈建议阅读从顶点坐标到屏幕位置的简单方式转换。例如。http://www.songho.ca/opengl/gl_transform.html,稍微过时,但很好地涵盖了这个想法。
还要检查http://www.songho.ca/opengl/gl_proctivemtivematrix.html,特别是有关正交投影的部分。它应该给您一个想法,如何构建您选择的底部,左,右和顶部坐标的正射原矩阵。