我目前正在通過當前的OpenGL編程指南4.3版。我實現了第一個例子的代碼,它應該顯示兩個三角形。基本上很簡單。OpenGL沒有按預期繪製
但是,當我運行該代碼(只是黑色的窗口)時沒有顯示任何內容。
這是三角形創建初始化函數:
GLuint vertexArrayObjects[1];
GLuint buffers[1];
const GLuint vertexCount = 6;
void init() {
// glClearColor(0,0,0,0);
glGenVertexArrays(1, vertexArrayObjects);
glBindVertexArray(vertexArrayObjects[0]);
GLfloat vertices[vertexCount][1] {
{-90.0, -90.0},
{ 85.0, -90.0},
{-90.0, 85.0},
{ 90.0, -85.0},
{ 90.0, 90.0},
{-85.0, 90.0}
};
glGenBuffers(1, buffers);
glBindBuffer(GL_ARRAY_BUFFER, buffers[0]);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
ShaderInfo shaders[] {
{GL_VERTEX_SHADER, "one.vsh"},
{GL_FRAGMENT_SHADER, "one.fsh"},
{GL_NONE, nullptr}
};
GLuint program = LoadShaders(shaders);
glUseProgram(program);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, ((char *)NULL + (0)));
glEnableVertexAttribArray(0);
}
而且非常簡單的抽獎:
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glBindVertexArray(vertexArrayObjects[0]);
glDrawArrays(GL_TRIANGLES, 0, vertexCount);
glFlush();
}
但正如所說,沒有什麼是畫。我的實施中是否有錯誤?
完整的代碼是here和LoadShaders(直接從書籍網站,所以這應該是出於興趣)是here。 着色器是here。
這是一個遠射,但我沒有看到任何'glViewport'。也許也關閉臉部剔除(我從來不記得默認是什麼) – Grimmy
@Grimmy剔除似乎是默認關閉。本書中的例子應該沒有視口,它的代碼中沒有任何地方,我還沒有看到更難的例子。 – Appleshell