【发布时间】:2018-06-03 22:16:17
【问题描述】:
Opengl 有右手坐标系。这意味着 z 值向我增加。
我画了两个三角形:
float vertices[] =
{
//position //color
//triangle 1
0.0f, 1.0f, -1.0f, 1.0f, 0.0f, 0.0f,//0
-1.0f, -1.0f, -1.0f, 1.0f, 0.0f, 0.0f,//1
1.0f, -1.0f, -1.0f, 1.0f, 0.0f, 0.0f,//2
//triangle 2
0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 1.0f,//3
1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f,//4
-1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f//5
};
为什么三角形 1 在前面?三角形 2 应该在前面,因为 0.0f > -1.0f。
我在顶点着色器中只有gl_Position = vec4(aPos, 1.0);。
之后,如果我在顶点着色器中按 z=-3 平移顶点,则此平移的行为应如此。对象变得更远。
【问题讨论】:
-
如何设置 VAO?
-
@ybungalobill 我使用 GLFW_OPENGL_COMPAT_PROFILE 模式,我不使用任何 VAO。
-
@Rabbid76 我不翻译时不使用投影矩阵和视图矩阵。当我通过 z=-3 平移顶点时,我只使用模型和投影矩阵。投影矩阵:
glm::mat4 projectionMatrix = glm::perspective<float>(glm::radians(60.0f), (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 10.0f);模型矩阵:glm::mat4 modelProjectionMatrix = glm::translate(projectionMatrix, glm::vec3(0.0f, 0.0f, -6.0f));
标签: opengl coordinate-systems vertex coordinate-transformation vertices