为什么这个OpenGL程序不画三角形?

I am trying to learn modern OpenGL and want to draw a triangle like this: http://www.opengl-tutorial.org/wp-content/uploads/2011/04/red_triangle.png

I am following this tutorial: www.opengl-tutorial.org/beginners-tutorials/tutorial-2-the-first-triangle/, but all I get is the dark blue background (clear color). What could be wrong with this code?

I am writing this in Go and tried to run it on Ubuntu and OS X. Note: I am using the glfw 3 library instead of glfw 2.7 that is used in the tutorial.

I think the relevant parts are:

func setup() {
    gl.ClearColor(0.0, 0.0, 0.4, 0.0)

    makeProgram(vertexShaderSource,fragmentShaderSource)

    vertexBufferData := []float32{
        -1,-1,0,
         1,-1,0,
         0, 1,0,
    }

    vertexBuffer = gl.GenBuffer()
    vertexBuffer.Bind(gl.ARRAY_BUFFER)
    gl.BufferData(gl.ARRAY_BUFFER, len(vertexBufferData)*4, vertexBufferData, gl.STATIC_DRAW)
}

func draw() {
    gl.Clear(gl.COLOR_BUFFER_BIT)

    program.Use()
    // first attribute buffer: vertices
    var vertexAttrib = program.GetAttribLocation("vertexPosition_modelspace")
    vertexAttrib.EnableArray()
    vertexBuffer.Bind(gl.ARRAY_BUFFER)
    var f float32 = 0.0

    vertexAttrib.AttribPointer(
        3,     // size
        gl.FLOAT, // type
        false, // normalized
        0,     // stride
        &f) // array buffer offset

    // draw the triangle
    gl.DrawArrays(gl.TRIANGLES, 0, 3)

    vertexAttrib.DisableArray()

}

Link to the full code: https://gist.github.com/mbertschler/8672365

I already tried to debug this with OpenGL Profiler on OSX, but it shows me no errors so far.

查看全部
duanjue6575
duanjue6575
2014/01/28 17:41
  • shader
  • opengl
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

1个回复