0

我有配备 Radeon HD6750、MacOS 10.7.5 的 MacBook pro,我发现它应该支持 OpenGL 3.2 和 GLSL 1.5 proof。不幸的是,当我尝试使用着色器(OpenVDB 查看器)构建一个第三方应用程序时,它返回我的硬件不支持#version 130. 代码如下:

mShader.setVertShader(
    "#version 130\n
    "in vec3 vertex;\n"
    "in vec3 color;\n"
    "out vec4 f_color;\n"
    "void main() {\n"
    "f_color = vec4(color, 1.0);\n"
    "gl_Position =  gl_ModelViewProjectionMatrix * vec4(vertex, 1.0);}\n");
//check that it is shader and add source
glCompileShader(mVertShader);

char buffer[256];
int l = 0;
glGetShaderInfoLog(mVertShader, 256, &l, buffer);
if(GL_NO_ERROR != glGetError()) throw "Error: Unable to compile vertex shader.";

我安装了 OpenGL 扩展查看器,它告诉我着色语言版本是 1.20,OpenGL 版本是 2.1(完全支持,3.2 中的一些功能可用)。如果我的硬件能够支持更新的版本,我不想使用 GLSL 1.2。您知道我的驱动程序/硬件出了什么问题以及如何解决这个问题吗?

4

1 回答 1

1

您必须告诉像素格式使用 OpenGL 3.2(或核心 opengl)。

NSOpenGLPixelFormatAttribute attribute[] = 
{
    NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core,
    //You can add other attributes here
    0
};

NSOpenGLPixelFormat *pixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:attribute];
[self setPixelFormat:pixelFormat];

编辑: 旁注,我很确定 OpenGL Extension Viewer 允许您在将使用 OpenGL 3.2 的某个地方使用 Core OpenGL。

于 2013-01-28T00:33:18.870 回答