编写一个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;
}
问题三角形不会出现黄色屏幕。
答案 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();