openGL básico, buffers de vértices e pyglet

Edit: rotoglup encontrou os problemas no meu código, adicionando os shaders que eu removi completaram a solução. Veja minha resposta abaixo para o código correto (com shaders).

Olá a todos !

Estou tentando aprender alguns conceitos básicos do OpenGL moderno deeste tutorial.

Eu gostaria de fazê-lo com python / pyglet em vez de C ++. Eu sei que o pyglet pode abstrair muito do OpenGL de baixo nível; Eu quero entender alguns dos princípios básicos antes de passar a escondê-los atrás de camadas de abstração.

Meu problema é extremamente simples: o código abaixo apenas desenha um ponto em vez dos 3 que eu estou esperando. Meu código é, tanto quanto posso dizer, idêntico ao C ++ no tutorial, exceto pela remoção de sombreadores de vértices e fragmentos (feitos viagletools em python), o que parece não fazer diferença para o meu problema.

Simplificar as coisas em um único ponto mostra o comportamento que eu não entendo (a primeira coordenada parece ser a única que afeta alguma coisa), levando-me de volta à minha crença de que simplesmente não consegui entender algo muito básico sobre pyglet, OpenGL, ou mesmo 3D em geral: p

Aqui está o código relevante:

import pyglet
from pyglet.gl import *

window = pyglet.window.Window()

positionBufferObject = GLuint()
vao = GLuint()

vertexPositions = [0.0, 0.0, 0.0,
                   0.25, 0.0, 0.0,
                   1.75, 1.75, 0.0]

vertexPositionsGl = (GLfloat * len(vertexPositions))(*vertexPositions)

@window.event
def on_draw():
    glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject)
    glEnableVertexAttribArray(0)
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0)
    glDrawArrays(GL_POINTS, 0, 3)
    glDisableVertexAttribArray(0)

glGenBuffers(1, positionBufferObject)
glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject)
glBufferData(GL_ARRAY_BUFFER, len(vertexPositionsGl)*4, vertexPositionsGl, GL_STATIC_DRAW)
glBindBuffer(GL_ARRAY_BUFFER, 0)

glClearColor(0.0, 0.0, 0.0, 0.0)
pyglet.app.run()

questionAnswers(2)

yourAnswerToTheQuestion