|

glBegin( GL_POINTS ); glVertex2i( 100, 40 ); glVertex2i( 120, 50 ); glVertex2i( 140, 80 ); glEnd();
| glVertex2i(...) | |||
| gl gl library |
Vertex basic command |
2 number of arguments |
i type of arguments |
| Suffix | Data Type | Corresponding C type |
OpenGL Type Deinfition |
|---|---|---|---|
| b | 8-bit Integer | signed char | GLbyte |
| s | 16-bit Integer | short | GLshort |
| i | 32-bit Integer | int or long | GLint, GLsizei |
| f | 32-bit Floating-point | float | GLfloat, GLclampf |
| d | 64-bit Integer | double | GLdouble, GLclampd |
| ub | 8-bit Unsigned Integer | unsigned char | GLubyte, GLboolean |
| us | 16-bit Unsigned Integer | signed short | GLushort |
| ui | 32-bit Unsigned Integer | unsigned int or unsigned long | GLuint, GLenum, GLbitfield |
//draw.cpp : demo program for drawing 3 dots, two lines, ploylines, rectangles
#include <GL/glut.h>
//initialization
void init( void )
{
glClearColor( 1.0, 1.0, 1.0, 0.0 ); //get white background color
glColor3f( 0.0f, 0.0f, 0.0f ); //set drawing color
glPointSize( 4.0 ); //a dot is 4x4
glMatrixMode( GL_PROJECTION );
glLoadIdentity(); //replace current matrix with identity matrix
gluOrtho2D( 0.0, 500.0, 0.0, 500.0 );
}
void display( void )
{
glClear( GL_COLOR_BUFFER_BIT ); //clear screen
glBegin( GL_POINTS ); //draw points
glVertex2i( 100, 50 ); //draw a point
glVertex2i( 100, 150 ); //draw a point
glVertex2i( 200, 200 ); //draw a point
glEnd();
glBegin( GL_LINES ); //draw lines
glVertex2i( 20, 20 ); //horizontal line
glVertex2i( 400, 20 );
glVertex2i( 20, 10 ); //vertical line
glVertex2i( 20, 400 );
glEnd();
glBegin( GL_LINE_STRIP ); //draw polyline
glVertex2i( 200, 100 );
glVertex2i( 300, 100 );
glVertex2i( 450, 200 );
glVertex2i( 200, 100 );
glEnd();
glColor3f( 0.6, 0.6, 0.6 ); //bright grey
glRecti( 400, 400, 450, 480 );
glColor3f( 1.0, 0.0, 0.0 ); //red
glRecti( 350, 350, 380, 390 );
glFlush(); //send all output to screen
}
------------------------------------------------------------------------------
//draw_main.cpp: main loop of drawing program
#include <GL/glut.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
//initialization
void init(void);
//does the drawing
void display(void);
/* Main Loop
* Open window with initial window size, title bar,
* RGBA display mode, depth buffer.
*/
int main(int argc, char** argv)
{
glutInit(&argc, argv); //initialize toolkit
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB ); //set display mode: single bufferring, RGBA model
glutInitWindowSize(500, 500); //set window size on screen
glutInitWindowPosition( 100, 150 ); //set window position on screen
glutCreateWindow(argv[0]); //open screen window
init();
glutDisplayFunc (display); //points to display function
glutMainLoop(); //go into perpetual loop
return 0;
}
|
//mouse_key.cpp
#include <GL/glut.h>
#include <stdlib.h>
#define screenHeight 500
//initialization
void init( void )
{
glClearColor( 1.0, 1.0, 1.0, 0.0 ); //get white background color
glColor3f( 0.0f, 0.0f, 0.0f ); //set drawing color
glPointSize( 4.0 ); //a dot is 4x4
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluOrtho2D( 0.0, 500.0, 0.0, 500.0 );
} //init
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glFlush();
}
void drawDot( int x, int y )
{
glBegin( GL_POINTS );
glVertex2i( x, y ); //draw a points
glEnd();
} //drawDot
void myMouse( int button, int state, int x, int y )
{
if ( button == GLUT_LEFT_BUTTON && state == GLUT_DOWN )
drawDot( x, screenHeight - y );
glFlush(); //send all output to screen
}
void myMovedMouse( int mouseX, int mouseY)
{
GLint x = mouseX;
GLint y = screenHeight - mouseY;
GLint brushsize = 6;
glColor3f( 1.0, 0.0, 0.0 );
glRecti ( x, y, x + brushsize, y + brushsize );
glFlush();
} //myMovedMouse
void myKeyboard ( unsigned char key, int mouseX, int mouseY )
{
GLint x = mouseX;
GLint y = screenHeight - mouseY;
switch( key )
{
case 'p':
drawDot ( x, y );
break;
case 'e':
exit ( -1 );
default :
break;
}
}
//mouse_key_main.cpp: main loop of drawing program
#include <GL/glut.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
//initialization
void init(void);
void myMouse( int button, int state, int x, int y);
void myMovedMouse( int mouseX, int mouseY);
void myKeyboard ( unsigned char key, int x, int y );
void display( void );
/* Main Loop
* Open window with initial window size, title bar,
* RGBA display mode, depth buffer.
*/
int main(int argc, char** argv)
{
glutInit(&argc, argv); //initialize toolkit
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB ); //set display mode
glutInitWindowSize(500, 500); //set window size on screen
glutInitWindowPosition( 100, 150 ); //set window position on screen
glutCreateWindow(argv[0]); //open screen widow
init();
glutMouseFunc( myMouse );
glutMotionFunc( myMovedMouse );
glutKeyboardFunc( myKeyboard );
glutDisplayFunc( display );
glutMainLoop(); //go into perpetual loop
return 0;
}
------------------------------------------------------------------
#sample Makefile for using OpenGL of Red Hat Linux 7.x
#CS 420, Tong Yu, Fall 2002
PROG = mouse_key
CFLAGS = -w -s -O2 -ansi -DSHM
XLIBS = -lX11 -lXext -lXmu -lXext -lXmu -lXt -lXi -lSM -lICE
LIBS = -lglut -lGLU -lGL
INCLS = -I/usr/X11R/include -I/share/mesa/include
LIBDIR = -L/usr/X11/lib -L/usr/X11R6/lib
#source codes
SRCS = mouse_key_main.cpp mouse_key.cpp
#substitute .cpp by .o to obtain object filenames
OBJS = $(SRCS:.cpp=.o)
#$< evaluates to the target's dependencies,
#$@ evaluates to the target
$(PROG): $(OBJS)
g++ -o $@ $(OBJS) $(LIBDIR) $(LIBS) $(XLIBS)
$(OBJS):
g++ -c $*.cpp $(INCLS)
clean:
rm $(OBJS) $(PROG)
|