用OpenGL绘制一个三角形

时间:2017-04-19 11:33:38

标签: c++ 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;
}

问题三角形不会出现黄色屏幕。

4 个答案:

答案 0 :(得分:3)

OpenGL中的坐标系是-1 - &gt; 1.您必须从您想要的像素值转换坐标。

这可以通过一些线性插值来完成。这样的事情应该有效:

float c = -1.0 + 2.0*desiredPixel/pixelWidth

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

答案 1 :(得分:3)

您的程序需要适当的视图/投影矩阵。 glOrtho(0, 640, 480, 0, -1, 1)应该做到这一点。理想情况下,应将MatrixMode设置为GL_PROJECTION来调用。

答案 2 :(得分:1)

glMatrixMode(GL_PROJECTION);
gluOrtho2D(0,400,0,500);

这解决了我的问题,主要是3D视角无效我认为

答案 3 :(得分:0)

下面是一个简单有效的三角形代码:

glBegin(GL_TRIANGLES);
glColor3f(0.1, 0.2, 0.3);
glVertex3f(0, 0, 0);
glVertex3f(1, 0, 0);
glVertex3f(0, 1, 0);
glEnd();