PDA

View Full Version : whats wrong with this code?



chrisx16x2008
03-11-2009, 06:53 PM
/* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above notice and this permission notice shall be included in all copies
* or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
/* File for "Basic Shapes" lesson of the OpenGL tutorial on
* www.videotutorialsrock.com
*/



#include <iostream>
#include <stdlib.h> //Needed for "exit" function

//Include OpenGL header files, so that we can use OpenGL
#ifdef __APPLE__
#include <OpenGL/OpenGL.h>
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif

using namespace std;

//Called when a key is pressed
void handleKeypress(unsigned char key, //The key that was pressed
int x, int y) { //The current mouse coordinates
switch (key) {
case 27: //Escape key
exit(0); //Exit the program
}
}

//Initializes 3D rendering
void initRendering() {
//Makes 3D drawing work when something is in front of something else
glEnable(GL_DEPTH_TEST);
}

//Called when the window is resized
void handleResize(int w, int h) {
//Tell OpenGL how to convert from coordinates to pixel values
glViewport(0, 0, w, h);

glMatrixMode(GL_PROJECTION); //Switch to setting the camera perspective

//Set the camera perspective
glLoadIdentity(); //Reset the camera
gluPerspective(45.0, //The camera angle
(double)w / (double)h, //The width-to-height ratio
1.0, //The near z clipping coordinate
200.0); //The far z clipping coordinate
}

//Draws the 3D scene
void drawScene() {
//Clear information from last draw
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW); //Switch to the drawing perspective
glLoadIdentity(); //Reset the drawing perspective
glRotatef(-30.0f, 1.0f, 0.0f, 0.0f);
glBegin(GL_QUADS); //Begin quadrilateral coordinates

//Box1
glVertex3f(-0.7f, -1.5f, -5.0f);
glVertex3f(-0.7f, -0.5f, -5.0f);
glVertex3f(0.4f, -0.5f, -5.0f);
glVertex3f(0.4f, -1.5f, -5.0f);

glEnd();

glRotatef(-30.0f, 1.0f, 0.0f, 0.0f);
glBegin(GL_QUADS);

//Box2
glVertex3f(-0.7f, -1.5f, -5.2f);
glVertex3f(-0.7f, -1.5f, -5.9f);
glVertex3f(0.4f, -1.5, -5.2f);
glVertex3f(0.4f, -1.5f, -5.9f);


glutSwapBuffers(); //Send the 3D scene to the screen
}

int main(int argc, char** argv) {
//Initialize GLUT
glutInit(&amp;argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(400, 400); //Set the window size

//Create the window
glutCreateWindow("Basic Shapes - videotutorialsrock.com");
initRendering(); //Initialize rendering

//Set handler functions for drawing, keypresses, and window resizes
glutDisplayFunc(drawScene);
glutKeyboardFunc(handleKeypress);
glutReshapeFunc(handleResize);

glutMainLoop(); //Start the main loop. glutMainLoop doesn't return.
return 0; //This line is never reached
}

I am going for something like this.http://www.oreillynet.com/pub/a/network/2000/06/23/magazine/opengl_build.html?page=2
All i have right now is front and bottom sides, but for some reason the bottom doesn't show up when i rotate it. This code isn't all mine i am editing sample code i got off a tutorial website. I am extremely new to openGl any help would be appreciated. Thanks

Brolingstanz
03-12-2009, 06:12 AM
Don't have time to go over the code, but as you're new to GL I would suggest going through the world renowned Red Book (http://www.opengl.org/documentation/red_book/). Chances are good you'll catch your mistake and the answers to many other questions you may have on the way. (Since you're using GLUT you may also want to have a peek at the resources (http://www.opengl.org/resources/libraries/) in that area as well.)

Hope it helps.

trinitrotoluene
03-12-2009, 07:50 AM
Lack a glEnd() function call just before glutSwapBuffers() inside the drawScene() function.