OPENGL 编程指导 二维图形显示?像素操作函数(画像素和读像素) ?最基本的绘图函数?画(写)像素: SetPixel ( int x , int y , int color ) ?读像素: int GetPixel ( int x , int y) ?注意: (1) 具体的语言环境使用的函数名可能不同,这里的函数名仅用于课堂教学(2) 屏幕坐标系统坐标原点为了方便表示,课堂上使用常用坐标系统。 OpenGL 中的坐标系统可变化。 O YX 课堂采用 Windows GDI 二维图形显示?用 OpenGL 实现读/写像素函数 void SetPixel(int x, int y, float r, float g, float b ) { glColor3f(r,g,b); glBegin(GL_POINTS) glVertex2i(x,y); glEnd(); } float * GetPixel(int x, int y) { float * rgb= new float[3]; glReadPixels(x,y,1,1,GL_RGB,GL_FLOAT,rgb); return rgb; } OpenGL 相关函数?坐标系: gluOrtho2D(xmin, xmax,ymin,ymax) ?函数设定屏幕显示窗口的二维笛卡儿坐标系?同时 gluOrtho2D 指定投影方式为正交投影?正交投影是一种投影变换(直接去掉一个坐标分量),采用矩阵运算,因此初始状态要设矩阵为单位矩阵?使用方法,一般在初始化 OpenGL 时调用,应用程序窗口大小发生变化时也需要调用? glMatrixMode(GL_PROJECTION); ? glLoadIdentity(); ? gluOrtho2D(xmin, xmax,ymin, ymax); (xmin, ymin) (xmax, ymax) Viewport 参数为绝对坐标,图元坐标超出部分将不显示?例 3-5-1 OpenGL 相关函数#include <gl/> int iWindowWidth=300,iWindowHeight=300; void init (void) { glClearColor (, , , ); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-iWindowWidth/2, iWindowWidth/2, -iWindowHeight/2, iWindowHeight/2); } void keyboard(unsigned char key, int x, int y) { switch (key) { case 27://ESC 键 exit(0); break; } } void Reshape(int width, int height)// 改变窗口大小{ glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-width/2, width/2, -height/2, height/2); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glClear (GL_COLOR_BUFFER_BIT); iWindowWidth = width; iWindowHeight = height; } OpenGL 相关函数 void display (void) { glClear (GL_COLOR_BUFFER_BIT); // 绘制坐标系 glLineWidth(2); glColor3f (, , ); glBegin(GL_LINES); glVertex2i(iWindowWidth/2-5,0); glVertex2i(-iWindowWidth/2+5,0);//X glVertex2i(iWindowWidth/2-20,5); glVertex2i(iWindowWidth/2-5,0);//Arrow glVertex2i(iWindowWidth/2-5,0); glVertex2
OPENGL编程函数 来自淘豆网m.daumloan.com转载请标明出处.