c语言 - 顶点对象不显示(旧版 OpenGL 1.2)



所以我得到了OpenGL红皮书3e,目前正在学习第2章(对于图形编程初学者来说,更新的OpenGL似乎太难了(。我从书中复制了一个代码片段(添加了初始化代码和绘图代码(,并尝试了渲染顶点阵列的每个选项(glDrawElementsglDrawRangeElementsgDrawArrays(。对于这个例子,我决定使用glDrawArrays,因为它似乎是最简单的。据我所知,这段代码没有错,因为它是编译和运行的。但是,不会绘制任何多边形。有人知道发生了什么事吗?我觉得我要么犯了一个非常愚蠢的错误,要么错过了一些基本的东西。

#include <stdio.h>
#include <GL/gl.h>
#include <GL/glext.h>
#include <GL/freeglut.h>
void init() {
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}
void display() {
static GLint vertices[] = { 25, 25,
100, 325, 
175, 25,
175, 325,
250, 25,
325, 325 };
static GLfloat colors[] = { 1.0, 0.2, 0.2,
0.2, 0.2, 1.0,
0.8, 1.0, 0.2,
0.75, 0.75, 0.75,
0.35, 0.35, 0.35,
0.5, 0.5, 0.5 };

glClear(GL_COLOR_BUFFER_BIT);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(3, GL_FLOAT, 0, colors);
glVertexPointer(2, GL_INT, 0, vertices);
glDrawArrays(GL_POLYGON, 0, sizeof(vertices) / sizeof(GLint));

glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glFlush();
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB);
glutInitWindowSize(512, 512);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}

您的顶点离剪裁平面太远了。

glOrtho通常使用像素坐标设置(但这不是必需的(参见参考

你可能想要

glOrtho(0.0, 512.0, 0.0, 512.0, -1.0, 1.0);

相关内容

最新更新