我从 openGL 和 c++ 开始,我想知道为什么我在窗口上看不到任何东西。这是我的代码:
#include <GLUT/GLUT.h>
#include <stdlib.h>
void init() {
glClearColor(0, 0, 1, 0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, 1.0, 1.0, 100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0, 0, -10);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex3i(-0.5, -0.5, 0);
glVertex3i(0, 0.5, 0);
glVertex3i(0.5, -0.5, 0);
glEnd();
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE| GLUT_RGBA);
glutInitWindowPosition(200, 200);
glutInitWindowSize(400, 400);
glutCreateWindow("Window");
init();
glutDisplayFunc(display);
glutMainLoop();
}
我有几个问题:
如果我像这样运行程序,我看到的只是一个白色窗口......我不是将颜色设置为蓝色吗?
当我
glutSwapBuffers()
在显示功能结束并运行程序时,我看到没有三角形的蓝色窗口。所以,我认为glutSwapBuffers()
函数只适用于双缓冲。最重要的是,我的三角形到底在哪里?哦,我不是将带有
glTranslatf()
功能的相机在 z 轴上转换为 -10 吗?如果您想知道我为什么使用 gluPerspective,我不得不说我正在尝试新事物,但如果我使用 gluOrtho2D(),它们都不起作用。
我不知道我是否遗漏了什么或什么。也许我需要搜索更多关于此的信息,但我认为大部分代码都是正确的。