我正在尝试在屏幕上渲染一个矩形。程序运行时,只显示清晰的颜色,没有矩形。
以下是代码:
glClearColor(0.0, 0.0, 0.0, 0.0);
glViewport(0, 0, 1280, 720);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 1280, 720, 0, -10, 10);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT || GL_DEPTH_BUFFER_BIT); //Clear the screen and depth buffer
int x = 100;
int y = 100;
while (!glfwWindowShouldClose(window)) {
glfwPollEvents();
glBegin(GL_QUADS);
glVertex2f(x, y);
glVertex2f(x + 10, y);
glVertex2f(x + 10, y + 10);
glVertex2f(x, y + 10);
glEnd();
gsm->update();
gsm->render();
glfwSwapBuffers(window);
}
答案 0 :(得分:1)
它被剔除了。通过提供比顶部0更大的底部= 720,您将Y轴与投影相反。您的四边形在本地坐标中是逆时针方向,但在标准化坐标中它是顺时针方向。请记住,投影矩阵是全局变换矩阵的一部分!现在,如果那是默认状态,那么就是那两个绕线方向
GL_CCW是实际的,它被认为是“前线”。默认情况下,OpenGL使用模式glCullFace(GL_BACK)剔除三角形,并且内部四边形被视为三角形对。)
改变顶点顺序
glBegin(GL_QUADS);
glVertex2f(x, y);
glVertex2f(x, y + 10);
glVertex2f(x + 10, y + 10);
glVertex2f(x + 10, y);
glEnd();
或更改剔除模式以匹配坐标系的左撇子或禁用剔除。
另见: 1. https://www.khronos.org/opengl/wiki/Viewing_and_Transformations 2. Is OpenGL coordinate system left-handed or right-handed?
的答案