def render(self, geometry): """ Add the sphere to the view. :param scene: The view to render the model into :type scene: pyglet_helper.objects.View """ # Renders a simple sphere with the #2 level of detail. if self.radius == 0.0: return self.init_model(geometry) coverage_levels = [30, 100, 500, 5000] lod = self.lod_adjust(geometry, coverage_levels, self.pos, self.radius) gl.glPushMatrix() self.model_world_transform(geometry.gcf, self.scale).gl_mult() self.color.gl_set(self.opacity) if self.translucent: # Spheres are convex, so we don't need to sort gl.glEnable(gl.GL_CULL_FACE) # Render the back half (inside) gl.glCullFace(gl.GL_FRONT) geometry.sphere_model[lod].gl_render() # Render the front half (outside) gl.glCullFace(gl.GL_BACK) geometry.sphere_model[lod].gl_render() else: # Render a simple sphere. geometry.sphere_model[lod].gl_render() gl.glPopMatrix()
def render(self, scene): """Add the cone to the scene. :param scene: The view to render the model into :type scene: pyglet_helper.objects.View """ if self.radius == 0: return self.init_model(scene) coverage_levels = [10, 30, 90, 250, 450] lod = self.lod_adjust(scene, coverage_levels, self.pos, self.radius) length = self.axis.mag() gl.glPushMatrix() self.model_world_transform(scene.gcf, Vector([length, self.radius, self.radius])).gl_mult() self.color.gl_set(self.opacity) if self.translucent: gl.glEnable(gl.GL_CULL_FACE) # Render the back half. gl.glCullFace(gl.GL_FRONT) scene.cone_model[lod].gl_render() # Render the front half. gl.glCullFace(gl.GL_BACK) scene.cone_model[lod].gl_render() else: scene.cone_model[lod].gl_render() gl.glPopMatrix()
def _set_backface_culling(self, value): self._backface_culling = value if self._backface_culling: gl.glCullFace(gl.GL_BACK) gl.glEnable(gl.GL_CULL_FACE) else: gl.glDisable(gl.GL_CULL_FACE)
def enable(self): gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT | gl.GL_STENCIL_BUFFER_BIT) gl.glDisable(gl.GL_DEPTH_TEST) gl.glColorMask(gl.GL_FALSE, gl.GL_FALSE, gl.GL_FALSE, gl.GL_FALSE) gl.glEnable(gl.GL_STENCIL_TEST) gl.glStencilOp(gl.GL_REPLACE, gl.GL_REPLACE, gl.GL_REPLACE) gl.glStencilFunc(gl.GL_ALWAYS, 1, 0xffffffff) gl.glEnable(gl.GL_BLEND) gl.glBlendFunc(Blend.SRC_ALPHA, Blend.ONE_MINUS_SRC_ALPHA) self.ground.draw() gl.glColorMask(gl.GL_TRUE, gl.GL_TRUE, gl.GL_TRUE, gl.GL_TRUE) gl.glEnable(gl.GL_DEPTH_TEST) gl.glStencilFunc(gl.GL_EQUAL, 1, 0xffffffff) gl.glStencilOp(gl.GL_KEEP, gl.GL_KEEP, gl.GL_KEEP) gl.glPushMatrix() gl.glCullFace(gl.GL_FRONT) gl.glEnable(gl.GL_NORMALIZE) gl.glEnable(gl.GL_BLEND) gl.glBlendFunc(Blend.SRC_ALPHA, Blend.ONE_MINUS_SRC_ALPHA) self.camera.render(lights=self.lights, effect_pass=1, before_render=self._before_visible) gl.glDisable(gl.GL_NORMALIZE) gl.glCullFace(gl.GL_BACK) gl.glPopMatrix() gl.glDisable(gl.GL_STENCIL_TEST) gl.glEnable(gl.GL_BLEND) gl.glBlendFunc(Blend.SRC_ALPHA, Blend.ONE_MINUS_SRC_ALPHA) self.ground.draw()
from glsl import * from pyglet.gl import (glClear, glClearColor, glEnable, glCullFace, GL_DEPTH_BUFFER_BIT, GL_COLOR_BUFFER_BIT, GL_DEPTH_TEST, GL_CULL_FACE, GL_BACK) from pyglet.window import key, mouse, Window from other.old_stuff.mathematics import create_perspective_matrix from other.old_stuff.shader import Program, VertexShader, FragmentShader # All calls to OpenGL functions must happen after we've created the context! window = Window(width=720, height=720) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glEnable(GL_DEPTH_TEST) glEnable(GL_CULL_FACE) glCullFace(GL_BACK) glClearColor(0.1, 0.1, 0.12, 1.0) object_shader = Program( vertex_shader=VertexShader(path='shaders/vertex_shader.txt'), fragment_shader=FragmentShader(path='shaders/fragment_shader.txt'), uniforms=OrderedDict( transform=Mat4(), view=Mat4(), projection=Mat4( *create_perspective_matrix(60, window.width / window.height, 1, 1000).flatten()), ), attributes=('location', 'normal', 'texture_coordinate')) entity = Entity(location=(0, 0, -20))
GAME.components.append(renderer) if SHAPE == "circle": circle_shape = Circle( center=Vec2.of(center), radius=radius, resolution=resolution, color=color, batch=renderer.batch, mode=MODE) else: rect_shape = Rectangle( center=Vec2.of(center), width=radius, height=radius/2, rotation=rotation, color=color, batch=renderer.batch, mode=MODE ) gl.glEnable(gl.GL_BLEND) gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_SRC_ALPHA) gl.glEnable(gl.GL_LINE_SMOOTH) gl.glFrontFace(gl.GL_CCW) gl.glEnable(gl.GL_CULL_FACE) gl.glCullFace(gl.GL_BACK) GAME.run()
def draw_sensor(self): glCullFace(GL_FRONT) x, y, z = self.position w, h, d = self.dim overlap = 0.05 x += overlap z += overlap y += overlap w -= overlap * 2 h -= overlap * 2 d -= overlap * 2 dx, dy, dz = x + w, y + h, z + d alpha = 0.25 graphics.draw( 20, GL_QUADS, ( "v3f/static", ( x, y, z, x, y, dz, x, dy, dz, x, dy, z, # side dx, y, dz, dx, y, z, dx, dy, z, dx, dy, dz, # side dx, y, z, x, y, z, x, dy, z, dx, dy, z, # side x, y, dz, dx, y, dz, dx, dy, dz, x, dy, dz, # side x, y, z, dx, y, z, dx, y, dz, x, y, dz) # bottom ), ( "c4f/static", ( 255, 255, 255, alpha, # 1 255, 255, 255, alpha, # 2 255, 255, 255, alpha, # 3 255, 255, 255, alpha, # 4 255, 255, 255, alpha, # 5 255, 255, 255, alpha, # 6 255, 255, 255, alpha, # 7 255, 255, 255, alpha, # 8 255, 255, 0, alpha, # 9 255, 255, 0, alpha, # 10 255, 255, 0, alpha, # 11 255, 255, 0, alpha, # 12 255, 255, 0, alpha, # 13 255, 255, 0, alpha, # 14 255, 255, 0, alpha, # 15 255, 255, 0, alpha, # 16 255, 0, 0, alpha, # 17 255, 0, 0, alpha, # 18 255, 0, 0, alpha, # 19 255, 0, 0, alpha # 20 ))) glCullFace(GL_BACK)