Created
January 26, 2015 21:38
-
-
Save olymk2/49db889c94488bed5019 to your computer and use it in GitHub Desktop.
example gl error 1282 modification to example code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from kivy.app import App | |
from kivy.clock import Clock | |
from kivy.core.window import Window | |
from kivy.uix.widget import Widget | |
from kivy.resources import resource_find | |
from kivy.graphics.transformation import Matrix | |
from kivy.graphics.opengl import * | |
from kivy.graphics import * | |
from objloader import ObjFile | |
class Renderer(Widget): | |
def __init__(self, **kwargs): | |
self.canvas = RenderContext(compute_normal_mat=True) | |
self.canvas.shader.source = resource_find('simple.glsl') | |
self.scene = ObjFile(resource_find("monkey.obj")) | |
super(Renderer, self).__init__(**kwargs) | |
with self.canvas: | |
self.cb = Callback(self.setup_gl_context) | |
PushMatrix() | |
self.setup_scene() | |
PopMatrix() | |
self.cb = Callback(self.reset_gl_context) | |
Clock.schedule_interval(self.update_glsl, 1 / 60.) | |
def setup_gl_context(self, *args): | |
glEnable(GL_DEPTH_TEST) | |
def reset_gl_context(self, *args): | |
glDisable(GL_DEPTH_TEST) | |
def gl_error(self, text = ''): | |
err = glGetError() | |
if not err: | |
return | |
while err: | |
print '## GL ## = ' + text + 'OPENGL Error Code = ', err | |
err = glGetError() | |
def update_glsl(self, *largs): | |
asp = self.width / float(self.height) | |
proj = Matrix().view_clip(-asp, asp, -1, 1, 1, 100, 1) | |
self.gl_error('its all borked') | |
self.canvas['projection_mat'] = proj | |
self.canvas['diffuse_light'] = (1.0, 1.0, 0.8) | |
self.canvas['ambient_light'] = (0.1, 0.1, 0.1) | |
self.rot.angle += 1 | |
def setup_scene(self): | |
Color(1, 1, 1, 1) | |
PushMatrix() | |
Translate(0, 0, -3) | |
self.rot = Rotate(1, 0, 1, 0) | |
m = list(self.scene.objects.values())[0] | |
UpdateNormalMatrix() | |
self.mesh = Mesh( | |
vertices=m.vertices, | |
indices=m.indices, | |
fmt=m.vertex_format, | |
mode='triangles', | |
) | |
PopMatrix() | |
class RendererApp(App): | |
def build(self): | |
return Renderer() | |
if __name__ == "__main__": | |
RendererApp().run() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment