我正在寻找(非弃用代码)OpenGL的一些示例,它们实际上以开始到结束的坐标之间的步骤,以使用非标准坐标的2D方式逐步显示代码/转换。即。
GLfloat Square[] =
{
-5.5f, -5.0f, 0.0f, 1.0f,
-5.5f, 5.0f, 0.0f, 1.0f,
5.5f, 5.0f, 0.0f, 1.0f,
5.5f, -5.0f, 0.0f, 1.0f
};
然后使用上面的坐标,取这些&将它们转换为必要的坐标,使它们映射到-1,1等&输出到屏幕。
每个例子,我在网上找到的教程等,只能使用上述范围-1 -1之间的坐标。
环境:C ++。
答案 0 :(得分:1)
当您在项目中使用“否”转换时,您只需使用放置在“规范化设备空间”中的坐标。这实际上是一个在每个轴上从-1到1的框。
在这种情况下,在顶点着色器中会有类似于这样的行:
gl_Position = attribVertexPos; // no transformation
对于2D,如果你想提供不同范围的坐标,你需要做的只是缩放位置:
gl_Position = attribVertexPos * 0.1
答案 1 :(得分:1)
如果你使用glm(http://glm.g-truc.net/index.html),你可以使用glm :: ortho创建一个视图矩阵,就像在旧式OpenGL中使用glOrtho一样。
EG:
glm::mat4 viewMatrix = glm::ortho(-5.0f, 5.0f, -5.0f, 5.0f, 0.0f, 1.0f);
如果你然后将其插入到着色器中,你应该得到从-5到+5而不是-1到+1的映射,或者你想要的任何比例。