我正在运行以下OpenGLRaw / Haskell代码。行glAttachShader program vShader
生成1282错误。我正在运行最新的Mac OS X(我认为它运行的是OpenGL 4.1)。
let points = [0.0, 0.0, (0.0 :: GLdouble)]
numPoints = (fromIntegral $ (length points) `div` 3)
verticesPtr <- newArray points
-- Buffer object to hold the vertices.
bufferPtr <- malloc :: IO (Ptr GLuint)
glGenBuffers 1 bufferPtr
bufferId <- peek bufferPtr
glBindBuffer gl_ARRAY_BUFFER bufferId
glBufferData gl_ARRAY_BUFFER
(fromIntegral ((sizeOf (1.0 :: GLdouble)) * (length points)))
verticesPtr gl_STATIC_DRAW
-- Shaders
program <- glCreateProgram
bindAttribLocation program 0 "position"
vShader <- glCreateShader gl_VERTEX_SHADER
vSource <- readFile "shaders/test.vert"
loadShaderSource vShader vSource
glCompileShader vShader
glAttachShader program vShader
glLinkProgram program
glUseProgram program
这是我的顶点着色器:
#version 410 core
layout(location = 0) in vec3 position;
void main() {
gl_Position = vec4(position, 1.0);
}
答案 0 :(得分:1)
错误1282(或0x0502)是GL_INVALID_OPERATION
的枚举常量。我不知道它在哪里触发了,虽然有一些关于捕获它的建议。
glGetError
并打印它来调试它。这有助于找到引发错误的确切位置。glGetShaderInfoLog
是否存在着色器可能的编译错误。