【发布时间】:2014-08-20 02:27:32
【问题描述】:
我正在尝试使用一个函数来使用 OpenGL 渲染一个三角形。 形状没有出现,我不知道为什么。我认为这可能只是因为顶点的位置。
主要方法:
int main() {
glutInitWindowSize(400, 400);
glutInitWindowPosition(200, 200);
glutCreateWindow("Test");
Initialize();
glutDisplayFunc(Draw);
glutMainLoop();
return 0;
}
初始化方法:
void Initialize() {
glClearColor(0.1, 0.1, 0.1, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}
drawTriangle函数:
void drawTriangle(int v1x, int v1y, int v2x, int v2y, int v3x, int v3y, int red, int green, int blue)
{
//arguments are: "vertex 1 x coordinate", "vertex 1 y coordinate" etc
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_TRIANGLES);
glVertex2f(v1x, v1y); // v1
glVertex2f(v2x, v2y); // v2
glVertex2f(v3x, v3y); // v3
glEnd();
glFlush();
}
绘制方法:
void Draw() {
drawTriangle(3.0, 2.9, 300, 300, 100, 100, 10, 0, 0);
}
【问题讨论】:
-
是的,你的坐标离屏幕很远。您应该熟悉 GL 坐标变换的工作原理以及
glOrtho()的作用。
标签: c++ opengl rendering render freeglut