繁体   English   中英

用OpenGL绘制一个三角形

[英]Draw a triangle with 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;
}

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

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

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

float c = -1.0 + 2.0*desiredPixel/pixelWidth

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

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

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

glBegin(GL_TRIANGLES);
glColor3f(0.1, 0.2, 0.3);
glVertex3f(0, 0, 0);
glVertex3f(1, 0, 0);
glVertex3f(0, 1, 0);
glEnd();
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0,400,0,500);

这解决了我的问题,大多数3D视角在我认为不起作用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM