c - openGL 3.1 中的三角形但 3.2 中没有

标签 c opengl opengl-3

有人知道为什么这段代码在 openGL 3.1 中显示三角形,但在 3.2 中什么都没有吗?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <GL/glew.h>
#include <GL/glfw.h>

GLuint myVBO;

void onDraw() {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    glEnableVertexAttribArray(0);
    glBindBuffer(GL_ARRAY_BUFFER, myVBO);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
    glDrawArrays(GL_TRIANGLES, 0, 3);
    glDisableVertexAttribArray(0);
    glfwSwapBuffers();
}

void loadData() {
    static const GLfloat g_vertex_buffer_data[] = {
       -1.0f, -1.0f, 0.0f,
       1.0f, -1.0f, 0.0f,
       0.0f,  1.0f, 0.0f,
    };
    glGenBuffers(1, &myVBO);
    glBindBuffer(GL_ARRAY_BUFFER, myVBO);
    glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW);
}

void createWindow() {
    int w=800,h=600;
    if(glfwInit() != GL_TRUE){
        return;
    }
    glfwOpenWindowHint(GLFW_FSAA_SAMPLES, 4);
    glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
    glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2); //change to 1 to see the triangle
    //glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    if(!glfwOpenWindow(w,h,5,6,5,0,8,0,GLFW_WINDOW)){
        glfwTerminate();
        return;
    }
    if(glewInit() != GLEW_OK){
        return;
    }
    printf("Version: %s\n", glGetString(GL_VERSION));
    printf("Error: %d\n", glGetError());
}
int main() {
    createWindow();
    loadData();
    while(1){onDraw();}
    return 0;
}

基于 http://www.opengl-tutorial.org/ 上的前 2 个教程 我的输出是

Version: 3.2.0 NVIDIA 295.49
Error: 1280

最佳答案

尝试专门询问兼容性配置文件:

glfwOpenWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE );

关于c - openGL 3.1 中的三角形但 3.2 中没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12785801/

相关文章:

c - 无法接收串口数据

opengl - 如何在opengl中实现圆填充算法?

c++ - 由于非 Ascii 字符,顶点着色器无法编译?

java - LWJGL 3D 碰撞检测?

opengl - 读取 unsigned int 时 glReadPixels 的精度

interface-builder - 带有 OpenGL 3.2 核心的 NSOpenGLView

c - 哪种二维矩阵表示更快

c - 输出自 Action 为C中的输入

c - C图形:如何在屏幕上绘制x-y轴?

c++ - 我如何创建一个线程安全的 QOffscreenSurface 供 OpenGl 使用