void renderScene() { // Set color and depth clear value glClearDepth(1.f); glClearColor(0.4f, 0.4f, 0.4f, 0.4f); // Enable Z-buffer read and write glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); // Clear color and depth buffer glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //variables for 3D render shader if(GL20Support) glUseProgram(shaderProg); else glUseProgramObjectARB(shaderProg); setShaderVariables(shaderProg); //Draw everything /*glPushMatrix(); setShaderVariables(shaderProg); drawExampleCube(); glPopMatrix();*/ drawShapes(); //Draw the UI (does not use lighting) if(GL20Support) glUseProgram(noLightProg); else glUseProgramObjectARB(noLightProg); setShaderVariables(noLightProg); draw_xy_grid(20,20,1.0,1.0); glPushMatrix(); glLoadIdentity(); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); gluOrtho2D(0.0,currentRes[0],0.0,currentRes[1]); setShaderVariables(noLightProg); drawButtons(); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); //copy buffer to texture /*glBindTexture(GL_TEXTURE_2D,textureTarget); glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, currentRes[0], currentRes[1], 0); texRender.useProgram(); //variables for texture shader //texture unit id is handled in ShowTexture setShaderVariables(texRender.getProgram()); //sets up a few shader variables and draws the texture on a full view quad texRender.render(textureTarget, currentRes, currentRes);*/ }
GLBox() { App = new sf::Window(sf::VideoMode(RES_WIDTH, RES_HEIGHT, 32), "Bubbles!"); // Setting up shaders FILE * logFile; logFile = fopen("log text", "wb"); if(NULL == logFile) { printf("Unable to open log file. Exiting...\n"); exit(2); } __glewInit(logFile); ShaderManager shaders = ShaderManager(logFile); char const * bubbleDrawVert = "BubbleShaders/bubbleRender3dModel.vert"; char const * bubbleDrawFrag = "BubbleShaders/bubbleRender3dModel.frag"; bubbleShaderProg = shaders.buildShaderProgram(&bubbleDrawVert, &bubbleDrawFrag, 1, 1); Clock = sf::Clock(); mode = BUBBLE_MODE; gfxinit(); while (App->IsOpened()) { App->SetActive(); handleEvents(); setShader(); setShaderVariables(bubbleShaderProg); display(); App->Display(); } fclose(logFile); }
void drawShapes() { for (std::list<Shape>::iterator it = listOfShapes.begin(); it != listOfShapes.end(); it++) { glPushMatrix(); unsigned int id = it->shapeId; vec3 transV = it->trans.trans; vec3 rotV = it->rot.trans; vec3 scaleV = it->scale.trans; vec3 color = it->color; glVertexAttrib3f(1,color[0],color[1],color[2]); glTranslatef(transV[0],transV[1],transV[2]); glRotatef(rotV[0],1.0,0.0,0.0); glRotatef(rotV[1],0.0,1.0,0.0); glRotatef(rotV[2],0.0,0.0,1.0); glScalef(scaleV[0],scaleV[1],scaleV[2]); glPushName(id); setShaderVariables(shaderProg); it->drawShape(); glPopName(); if(id == selected) { if(GL20Support) glUseProgram(noLightProg); else glUseProgramObjectARB(noLightProg); setShaderVariables(noLightProg); drawSelectCube(); if(GL20Support) glUseProgram(shaderProg); else glUseProgramObjectARB(shaderProg); } glPopMatrix(); } }
void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); setShader(); setShaderVariables(bubbleShaderProg); switch (mode) { case BUBBLE_MODE: glClearColor(0.0f, 0.15f, 0.25f, 0.0f); for(int i = 0; i < NUM_BUBBLES; i++) { bubbles[i].draw(); } break; } glFlush(); }
GLBox() { App = new sf::Window(sf::VideoMode(RESOLUTION, RESOLUTION, 32), "Spherio"); glEnable(GL_LIGHTING); cameraLookMode = false; lastPos[0] = -1; lastPos[1] = -1; cameraTheta = tiltX = tiltZ = 0; cameraPhi = 50; buttonPressed[0] = buttonPressed[1] = buttonPressed[2] = buttonPressed[3] = false; gfxinit(); double a[] = {20, 0, -20}; double b[] = {20, 10, -20}; double block1Color[3] = {1, 0, 0}; double block1Center[3] = {0, 0, 0}; level[0] = Block(block1Color, block1Center, 4, 1, 4, 0, 0); double ballColor[3] = {0,1,1}; double ballCenter[3] = {0,3,0}; ball = Sphere(ballColor,ballCenter,0.314159); //double block2Color[3] = {0, 0, 1}; //double block2Center[3] = {2, 0, -5}; //level[1] = Block(block2Color, block2Center, 1, 1, 1, 0, 45); /*level[2] = Block(0, 0, -200, 0, 10, -200, 2); level[3] = Block(0, -10, -20, 0, 10, -20, 2); level[4] = Block(-10, 0, -20, 10, 0, -2, 2); */ //level[0].toString(); FILE * logFile; logFile = fopen("log.txt", "wb"); if(logFile == NULL) { printf("Unable to open log file. Exiting...\n"); exit(2); } __glewInit(logFile); ShaderManager shaders = ShaderManager(logFile); const char * vertPath = "Shaders/Render3dModel.vert"; const char * fragPath = "Shaders/Render3dModel.frag"; prog = shaders.buildShaderProgram(&vertPath, &fragPath, 1, 1); vertPath = "Shaders/BallShader.vert"; fragPath = "Shaders/BallShader.frag"; ballProg = shaders.buildShaderProgram(&vertPath, &fragPath, 1, 1); while (App->IsOpened()) { App->SetActive(); handleEvents(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); updateModelviewMatrix(); glUseProgram(prog); setShaderVariables(prog); setShaderVariables(ballProg); for (int i = 0; i < 1; ++i) { level[i].display(); } glUseProgram(ballProg); ball.display(); App->Display(); } }