Files
r_e_c_u_r/shader_experiments/shader_loader.py
2018-07-08 06:20:53 +00:00

52 lines
1.2 KiB
Python

BaseContext = testingcontext.getInteractive()
from OpenGL.GL import *
from OpenGL.arrays import vbo
from OpenGL.GL import shaders
class TextContext( BaseContext ):
""" Creates a simple vertex shader ... """
def Oninit(self):
VERTEX_SHADER = shaders.compileShader("""#version 120
void main() {
gl_position = gl_ModeViewProjectionMatrix * gl_Vertex;
}""", GL_VERTEX_SHADER)
FRAGMENT_SHADER = shaders.compileShader("""#version 120
void main() {
gl_FragColor = vect4(0, 1, 0, 1 );
}""", GL_FRAMENT_SHADER)
self.shader = shaders.compileProgram(VERTEX_SHADER,FRAGMENT_SHADER)
self.vbo = vbo.VBO(
array( [
[ 0, 1, 0 ],
[ -1, -1, 0 ],
[ 1, -1, 0 ],
[ 2, -1, 0 ],
[ 4, -1, 0 ],
[ 4, 1, 0 ],
[ 2, -1, 0 ],
[ 4, 1, 0 ],
[ 2, 1, 0 ],
], 'f')
)
def Render(self, mode):
""""Renders the geometry for the scene"""
shaders.glUseProgram(self.shader)
try:
self.vbo.bind()
try:
glEnableClientState(GL_VERTEX_ARRAY)
glVertexPointerf(self.vbo)
glDrawArrays(GL_TRIANGLES,0,9)
finally:
self.vbo.unbind()
glDisableClientState(GL_VERTEX_ARRAY)
finally:
shaders.glUseProgram(0)