我正在尝试从顶点缓冲区对象呈现一些数据。但是很少使用 glutil 和 raw。当程序运行时,它陷入了无限循环,我得到了你在下面看到的错误。
顶点着色器
#version 150 core
in vec4 position;
void main (void)
{
gl_Position = position;
}
片段着色器
#version 150 core
out vec4 color;
void main (void)
{
color = vec4(0.0, 0.8, 1.0, 1.0);
}
我曾尝试使用 430,但没有奏效。所以我尝试使用 150,因为我看到很多人在使用它。此外,我在使用 raw 时尝试过使用布局,但这没有用。
使用实例
mesh :: [GLfloat]
mesh = [ 0.25, -0.25, 0.5
,-0.25, -0.25, 0.5
, 0.25, 0.25, 0.5]
preMainLoop :: G.Window -> IO ()
preMainLoop window = do
p <- loadShaderProgram [ ( VertexShader, "frag.fs")
, ( FragmentShader, "vert.vs")]
myVBO <- makeBuffer ArrayBuffer mesh
vao <- makeVAO $ let vad = VertexArrayDescriptor 3 Float stride offset0"
in do
printErrorMsg "something else"
currentProgram $= Just (program p)
printErrorMsg "program"
bindBuffer ArrayBuffer $= Just myVBO
printErrorMsg "buffer"
enableAttrib p "position"
printErrorMsg "attribLocation"
setAttrib p "position" ToFloat vad
bindBuffer ArrayBuffer $= Nothing
mainLoop window vao p
错误
program
WARNING: attrib position is not active
GL: Error InvalidOperation "invalid operation"