C++ OpenGL不渲染任何东西

C++ OpenGL不渲染任何东西,c++,opengl,graphics,C++,Opengl,Graphics,我正在遵循一个在线教程(大致),虽然我没有错误,但没有任何渲染 以下是我的代码的重要部分 初始化: void init() { GLfloat firstTriangle[] = { -0.9f, -0.5f, 0.0f, // left -0.0f, -0.5f, 0.0f, // right -0.45f, 0.5f, 0.0f, // top }; GLfloat secondTriangle[] =

我正在遵循一个在线教程(大致),虽然我没有错误,但没有任何渲染

以下是我的代码的重要部分

初始化:

    void init()
{
    GLfloat firstTriangle[] = {
        -0.9f, -0.5f, 0.0f,  // left 
        -0.0f, -0.5f, 0.0f,  // right
        -0.45f, 0.5f, 0.0f,  // top 
    };
    GLfloat secondTriangle[] = {
        0.0f, -0.5f, 0.0f,  // left
        0.9f, -0.5f, 0.0f,  // right
        0.45f, 0.5f, 0.0f   // top 
    };
    // Set up the shaders
    buildandcomp();
    //generate VAOs/VBOs
    generateVertexArrayObjects(firstTriangle, secondTriangle);
}
这里是buildandcomp():

请注意,变量是全局定义的

以下是generateVertexArrayObjects():

以下是着色器:

const char* vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
"void main()\n"
"{\n"
"   gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
"}\0";
const char* fragmentShader1Source = "#version 330 core\n"
"out vec4 FragColor;\n"
"void main()\n"
"{\n"
"   FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n"
"}\n\0";
const char* fragmentShader2Source = "#version 330 core\n"
"out vec4 FragColor;\n"
"void main()\n"
"{\n"
"   FragColor = vec4(1.0f, 1.0f, 0.0f, 1.0f);\n"
"}\n\0";
以下是我的显示功能:

void display() {
    keyOperations();
    glClear(GL_COLOR_BUFFER_BIT);
    glClearColor(0.2f, 0.3f, 0.3f, 1.0f);

    glUseProgram(shaderProgramOrange);
    glBindVertexArray(VAOs[0]);
    glDrawArrays(GL_TRIANGLES, 0, 3);

    glUseProgram(shaderProgramYellow);
    glBindVertexArray(VAOs[1]);
    glDrawArrays(GL_TRIANGLES, 0, 3);
    glutSwapBuffers();
}

我怀疑这与我的着色器有关,但我不知道这可能是什么。我还是OpenGL新手,所以我不确定它在哪里,我错了。我已经加载了我的数据,我已经构建并编译了我的着色器,我已经使用这些着色器显示了我的三角形。如果您有任何见解,我们将不胜感激。

这是一个非常基本的c/c++问题,与OpenGL无关。想想
sizeof(t1)
sizeof(t2)
。将其替换为
sizeof(GLfloat)*9
@Rabbid76谢谢您的回答。一定有什么我不明白的。为什么sizeof(t1)不等于sizeof(GLfloat)*9?当我在init()函数中打印firstTriangle的大小时,大小是36。然而,在我的VAO发生器中,sizeof(t1)是4。发生了什么事?谢谢。您不知道数组的大小。获取参数的大小,该参数是指向数组的指针
const char* vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
"void main()\n"
"{\n"
"   gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
"}\0";
const char* fragmentShader1Source = "#version 330 core\n"
"out vec4 FragColor;\n"
"void main()\n"
"{\n"
"   FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n"
"}\n\0";
const char* fragmentShader2Source = "#version 330 core\n"
"out vec4 FragColor;\n"
"void main()\n"
"{\n"
"   FragColor = vec4(1.0f, 1.0f, 0.0f, 1.0f);\n"
"}\n\0";
void display() {
    keyOperations();
    glClear(GL_COLOR_BUFFER_BIT);
    glClearColor(0.2f, 0.3f, 0.3f, 1.0f);

    glUseProgram(shaderProgramOrange);
    glBindVertexArray(VAOs[0]);
    glDrawArrays(GL_TRIANGLES, 0, 3);

    glUseProgram(shaderProgramYellow);
    glBindVertexArray(VAOs[1]);
    glDrawArrays(GL_TRIANGLES, 0, 3);
    glutSwapBuffers();
}