用OpenGL画一个三角形

新手上路,请多包涵

编写一个 C++ 程序,该程序将绘制一个顶点位于 (300,210)、(340,215) 和 (320,250) 的三角形。三角形的中心位于 (320,240)。

 #include <GL/glut.h>
#include <stdlib.h>

void display(void)
{
    glClearColor(1,1,0,0);

    glClear(GL_COLOR_BUFFER_BIT);

    glBegin(GL_TRIANGLES);

    glColor3f(0.5,0,0);

    glVertex2f(300.0,210.0);
    glVertex2f(340.0,215.0);
    glVertex2f(320.0,250.0);

    glEnd();

    glFlush();
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitWindowSize(640,500);
    glutInitWindowPosition(1,1);

    glutCreateWindow("Triangle");

    glutDisplayFunc(display);

    glutMainLoop();

    return EXIT_SUCCESS;
}

问题三角形未出现,仅出现黄色屏幕。

原文由 Waleed Tariq 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 558
2 个回答

您的程序需要适当的视图/投影矩阵。 glOrtho(0, 640, 480, 0, -1, 1) 应该可以解决问题。理想情况下,应该调用 MatrixMode 设置为 GL_PROJECTION

原文由 Bartek Banachewicz 发布,翻译遵循 CC BY-SA 3.0 许可协议

OpenGL 中的坐标系是 -1 -> 1。您必须将坐标从所需的像素值转换。

这可以通过一些线性插值来完成。像这样的东西应该工作:

 float c = -1.0 + 2.0*desiredPixel/pixelWidth

您需要对所有三角形坐标进行此转换。

原文由 pingul 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题