New user trying tutorial
Berlioz Silver <[email protected]> Sat, 30 Aug 2014 13:07:02 -0700
| Newsgroups | gmane.comp.python.opengl.user |
|---|---|
| Message-ID | <CAG6TPhDZWbWyF-r2dVFpHKWdL7qc_MOt_b_7BwNzHhc6uWM6eQ@mail.gmail.com> |
I've been interested in attempting to use pyopengl and pygame together to
display 3D images and accelerate my programs.
I figured a logical first step would be to learn a bit about pyopengl, so I
tried the tutorial.
I successfully installed pyopengl on OSX 10.9, and ran the first tutorial.
However, the second (introducing color variations
http://pyopengl.sourceforge.net/context/tutorials/shader_2.html) fails with
a bus error 10.
Is there another tutorial I should follow/what mistake did I make that is
giving me a segfault?
Here is my code:
from OpenGLContext import testingcontext
BaseContext = testingcontext.getInteractive()
from OpenGL.GL import *
from OpenGL.arrays import vbo
from OpenGL.GL import shaders
import numpy as np
class TestContext(BaseContext):
def OnInit(self):
try:
VERTEX_SHADER = shaders.compileShader("""
varying vec4 vertex_color;
void main(){
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
vertex_color = gl_Color;
}""", GL_VERTEX_SHADER)
FRAGMENT_SHADER = shaders.compileShader("""
varying vec4 vertex_color;
void main(){
gl_FragColor = vertex_color;
}""", GL_FRAGMENT_SHADER)
self.shader = shaders.compileProgram(VERTEX_SHADER, FRAGMENT_SHADER)
except (GLError, RuntimeError) as err:
print "Shader compilation error:", err
raise
self.vbo = vbo.VBO(np.array([
[ 0, 1, 0, 0,1,0 ],
[-1,-1, 0, 1,1,0 ],
[ 1,-1, 0, 0,1,1 ],
[ 2,-1, 0, 1,0,0 ],
[ 4,-1, 0, 0,1,0 ],
[ 4, 1, 0, 0,0,1 ],
[ 2,-1, 0, 1,0,0 ],
[ 4, 1, 0, 0,0,1 ],
[ 2, 1, 0, 0,1,1 ],
],'f') )
def Render(self, mode):
glUseProgram(self.shader)
try:
self.vbo.bind()
try:
glEnableClientState(GL_VERTEX_ARRAY)
glEnableClientState(GL_COLOR_ARRAY)
#glVertexPointerf(self.vbo)
glColorPointer(3, GL_INT, 24, self.vbo+12)
glDrawArrays(GL_TRIANGLES, 0, 9)
finally:
self.vbo.unbind()
glDisableClientState(GL_VERTEX_ARRAY)
glDisableClientState(GL_COLOR_ARRAY)
finally:
shaders.glUseProgram(0)
if __name__ == "__main__":
TestContext.ContextMainLoop()
------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
PyOpenGL Homepage
http://pyopengl.sourceforge.net
_______________________________________________
PyOpenGL-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyopengl-users