first commit
This commit is contained in:
129
CS4451/oglexamples/3d.c
Normal file
129
CS4451/oglexamples/3d.c
Normal file
@@ -0,0 +1,129 @@
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
#include <GL/glut.h> // glut.h already includes GL/gl.h and GL/glu.h
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/* you may need to locate glut.h on your computer and change the path accordingly.
|
||||
* It is most likely in ~/include or ~include/GL.
|
||||
*/
|
||||
|
||||
/* the viewport is 500x500 with the origin at (0,0) */
|
||||
int Vx_min=0, Vx_max=500, Vy_min=0, Vy_max=500, Vz_min=0, Vz_max=0;
|
||||
|
||||
int frame_width, frame_height;
|
||||
|
||||
|
||||
void init(void)
|
||||
{
|
||||
glClearColor (0.0, 0.0, 0.0, 0.0);
|
||||
}
|
||||
|
||||
void display(void)
|
||||
{
|
||||
glClear (GL_COLOR_BUFFER_BIT);
|
||||
|
||||
/* green */
|
||||
glColor3f(0.0,1.0,0.0); /* params are floats in range [0.0,1.0] */
|
||||
|
||||
/* draws one or more lines */
|
||||
glBegin(GL_LINES);
|
||||
/* params are floats */
|
||||
glVertex2f(-150.0, -150.0); /* 2d floats (z=0) */
|
||||
glVertex2f( 150.0, -150.0);
|
||||
|
||||
/* params are integers */
|
||||
glVertex2i(150, -150);
|
||||
glVertex2i(150, 150);
|
||||
|
||||
/* params are doubles */
|
||||
glVertex2d(150.0, 150.0);
|
||||
glVertex2d(-150.0, 150.0);
|
||||
|
||||
/* params are floats */
|
||||
glVertex2f(-150.0, 150.0);
|
||||
glVertex2f(-150.0, -150.0);
|
||||
glEnd();
|
||||
|
||||
/* blue */
|
||||
glColor3ub(0,0,255); /* params are unsigned bytes in range [0,255] */
|
||||
|
||||
/* draws one polygon */
|
||||
glBegin(GL_POLYGON);
|
||||
glVertex2i(-125, -125);
|
||||
glVertex2i(125, -125);
|
||||
glVertex2i(125, 125);
|
||||
glVertex2i(-125, 125);
|
||||
glEnd();
|
||||
|
||||
|
||||
/* black */
|
||||
glColor3f(0.0,0.0,0.0); /* params are floats in range [0.0,1.0] */
|
||||
|
||||
/* draws one or more triangles */
|
||||
glBegin(GL_TRIANGLES);
|
||||
glVertex2i(-100, -100);
|
||||
glVertex2i(100, -100);
|
||||
glVertex2i(0, 100);
|
||||
|
||||
glEnd();
|
||||
glColor3f(1.0,0.0,0.0);
|
||||
glBegin(GL_TRIANGLES);
|
||||
glVertex2i(-100, -100);
|
||||
glVertex2i(-100, 100);
|
||||
glVertex2i(100, 0);
|
||||
glEnd();
|
||||
|
||||
glFlush ();
|
||||
}
|
||||
|
||||
void reshape (int w, int h)
|
||||
{
|
||||
frame_width = w;
|
||||
frame_height = h;
|
||||
|
||||
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
|
||||
glMatrixMode (GL_PROJECTION);
|
||||
glLoadIdentity ();
|
||||
|
||||
// gluOrtho2D(Vx_min, Vx_max, Vy_min, Vy_max); // 2d
|
||||
glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 500.0); // 3d
|
||||
|
||||
glMatrixMode (GL_MODELVIEW);
|
||||
glLoadIdentity(); // 3d
|
||||
gluLookAt (0.0, 0.0, 375.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); // 3d
|
||||
|
||||
|
||||
}
|
||||
void mouse(int button, int state, int x, int y)
|
||||
{
|
||||
|
||||
switch (button) {
|
||||
case GLUT_LEFT_BUTTON:
|
||||
if (state == GLUT_DOWN) {
|
||||
printf("left mouse click\n");
|
||||
glutPostRedisplay();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
glutInit(&argc, argv);
|
||||
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
|
||||
glutInitWindowSize (Vx_max-Vx_min, Vy_max-Vy_min);
|
||||
glutInitWindowPosition (100, 100);
|
||||
glutCreateWindow (argv[0]);
|
||||
|
||||
init ();
|
||||
|
||||
glutDisplayFunc(display);
|
||||
glutReshapeFunc(reshape);
|
||||
glutMouseFunc(mouse);
|
||||
glutMainLoop();
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
Reference in New Issue
Block a user