void display_ply(int viewmode) /* 0==filled face 1==filled+wireframe 2==wireframe */ { glDisable(GL_POLYGON_OFFSET_FILL); if (viewmode==1) { glPolygonOffset(1,1); glEnable(GL_POLYGON_OFFSET_FILL); } if (viewmode==0 || viewmode==1) { draw_triangles(); } if (viewmode==1 || viewmode==2) { glDisable(GL_LIGHTING); glDisable(GL_POLYGON_OFFSET_FILL); glColor3f(0,0,0); glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); draw_triangles(); glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); glEnable(GL_LIGHTING); } }
int main () { char vertex_shader[512]; char fragment_shader[512]; char geometry_shader[512]; int terminate = 0; GLfloat cx, cy; bcm_host_init(); // Clear application state memset( state, 0, sizeof( *state ) ); // Start OGLES init_ogl(state); glm::vec3 resolution((float)state->screen_width,(float)state->screen_height,0.0f); cx = state->screen_width/2; cy = state->screen_height/2; state->verbose=1; Shader shader(vertex_shader, fragment_shader,geometry_shader); init_shaders(state); //glBindAttribLocation (shader.Program, 0 , "position"); shader.linkProg(); shader.Use(); state->program=shader.Program; GLint resLoc = glGetUniformLocation(shader.Program, "iResolution"); glUniform3f(resLoc,resolution.x,resolution.y,resolution.z); GLfloat currentTime = 0.0f; GLint timeLoc = glGetUniformLocation(shader.Program, "time"); glUniform1f(timeLoc,currentTime); //draw_mandelbrot_to_texture(state, cx, cy, 0.003); while (!terminate) { int x, y, b; currentTime=currentTime+0.02; timeLoc = glGetUniformLocation(shader.Program, "time"); glUniform1f(timeLoc,currentTime); b = get_mouse(state, &x, &y); if (b) break; draw_triangles(state, cx, cy, 0.003, x, y); } return 0; }
ENTRYPOINT void draw_hexstrut (ModeInfo *mi) { hexstrut_configuration *bp = &bps[MI_SCREEN(mi)]; Display *dpy = MI_DISPLAY(mi); Window window = MI_WINDOW(mi); if (!bp->glx_context) return; glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); glShadeModel(GL_SMOOTH); glDisable(GL_DEPTH_TEST); glEnable(GL_NORMALIZE); glDisable(GL_CULL_FACE); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix (); { double x, y, z; get_position (bp->rot, &x, &y, &z, !bp->button_down_p); glTranslatef((x - 0.5) * 6, (y - 0.5) * 6, (z - 0.5) * 12); gltrackball_rotate (bp->trackball); get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); glRotatef (z * 360, 0.0, 0.0, 1.0); } mi->polygon_count = 0; glScalef (30, 30, 30); if (! bp->button_down_p) tick_triangles (mi); draw_triangles (mi); glPopMatrix (); if (mi->fps_p) do_fps (mi); glFinish(); glXSwapBuffers(dpy, window); }
int main () { bcm_host_init(); // Clear application state memset( state, 0, sizeof( *state ) ); // Start OGLES init_ogl(state); init_shaders(state); draw_triangles(state); sleep(2); return 0; }
void Simulation::tick() { glViewport(0, 0, viewportWidth, viewportHeight); if(!filledTargetBuffer) { fill_target_buffer(); } glBindFramebuffer(GL_FRAMEBUFFER, fbo); { mutate_triangles(); draw_triangles(); compare_fitness(); } glBindFramebuffer(GL_FRAMEBUFFER, originalFbo); draw_output(); }
void rasterizer::draw() { if (indices_.empty() || wvp_.empty()) { return; } const auto& desc = state_->get_desc(); switch (desc.prim_) { case pt_point: break; case pt_line: draw_lines(); break; case pt_triangle: draw_triangles(); break; case pt_none: default: break; } }
ENTRYPOINT void draw_planet (ModeInfo * mi) { planetstruct *gp = &planets[MI_SCREEN(mi)]; int wire = MI_IS_WIREFRAME(mi); Display *dpy = MI_DISPLAY(mi); Window window = MI_WINDOW(mi); double x, y, z; if (!gp->glx_context) return; glDrawBuffer(GL_BACK); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glXMakeCurrent (dpy, window, *(gp->glx_context)); mi->polygon_count = 0; if (! gp->button_down_p) switch (gp->state) { case STARTUP: gp->ratio += speed * 0.01; break; case FLAT: gp->ratio += speed * 0.005; break; case FOLD: gp->ratio += speed * 0.01; break; case ICO: gp->ratio += speed * 0.01; break; case STEL_IN: gp->ratio += speed * 0.05; break; case STEL: gp->ratio += speed * 0.01; break; case STEL_OUT: gp->ratio += speed * 0.07; break; case ICO2: gp->ratio += speed * 0.07; break; case AXIS: gp->ratio += speed * 0.02; break; case SPIN: gp->ratio += speed * 0.005; break; case UNFOLD: gp->ratio += speed * 0.01; break; default: abort(); } if (gp->ratio > 1.0) { gp->ratio = 0; switch (gp->state) { case STARTUP: gp->state = FLAT; break; case FLAT: gp->state = FOLD; break; case FOLD: gp->state = ICO; break; case ICO: gp->state = STEL_IN; break; case STEL_IN: gp->state = STEL; break; case STEL: { int i = (random() << 9) % 7; gp->state = (i < 3 ? STEL_OUT : i < 6 ? SPIN : AXIS); } break; case AXIS: gp->state = STEL_OUT; break; case SPIN: gp->state = STEL_OUT; break; case STEL_OUT: gp->state = ICO2; break; case ICO2: gp->state = UNFOLD; break; case UNFOLD: gp->state = FLAT; break; default: abort(); } } glEnable(GL_LINE_SMOOTH); glEnable(GL_POINT_SMOOTH); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glPushMatrix(); gltrackball_rotate (gp->trackball); glRotatef (current_device_rotation(), 0, 0, 1); if (gp->state != STARTUP) { get_position (gp->rot, &x, &y, &z, !gp->button_down_p); x = (x - 0.5) * 3; y = (y - 0.5) * 3; z = 0; glTranslatef(x, y, z); } if (do_roll && gp->state != STARTUP) { get_rotation (gp->rot, &x, &y, 0, !gp->button_down_p); glRotatef (x * 360, 1.0, 0.0, 0.0); glRotatef (y * 360, 0.0, 1.0, 0.0); } if (do_stars) { glDisable(GL_TEXTURE_2D); glDisable(GL_LIGHTING); glPushMatrix(); glScalef (60, 60, 60); glRotatef (90, 1, 0, 0); glRotatef (35, 1, 0, 0); glCallList (gp->starlist); mi->polygon_count += gp->starcount; glPopMatrix(); glClear(GL_DEPTH_BUFFER_BIT); } if (! wire) glEnable (GL_LIGHTING); if (do_texture) glEnable(GL_TEXTURE_2D); glScalef (2.6, 2.6, 2.6); { GLfloat fold_ratio = 0; GLfloat stel_ratio = 0; switch (gp->state) { case FOLD: fold_ratio = gp->ratio; break; case UNFOLD: fold_ratio = 1 - gp->ratio; break; case ICO: case ICO2: fold_ratio = 1; break; case STEL: case AXIS: case SPIN: fold_ratio = 1; stel_ratio = 1; break; case STEL_IN: fold_ratio = 1; stel_ratio = gp->ratio; break; case STEL_OUT: fold_ratio = 1; stel_ratio = 1 - gp->ratio; break; case STARTUP: /* Tilt in from flat */ glRotatef (-90 * ease_ratio (1 - gp->ratio), 1, 0, 0); break; default: break; } # ifdef HAVE_MOBILE /* Enlarge the icosahedron a bit to make it more visible */ { GLfloat s = 1 + 1.3 * ease_ratio (fold_ratio); glScalef (s, s, s); } # endif if (gp->state == SPIN) { align_axis (mi, 0); glRotatef (ease_ratio (gp->ratio) * 360 * 3, 0, 0, 1); align_axis (mi, 1); } draw_triangles (mi, ease_ratio (fold_ratio), ease_ratio (stel_ratio)); if (gp->state == AXIS) draw_axis(mi); } glPopMatrix(); if (mi->fps_p) do_fps (mi); glFinish(); glXSwapBuffers(dpy, window); }
void draw() { draw_triangles(); }