資源描述:
《OpenGL編程輕松入門(mén)之像素操作》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、OpenGL編程輕松入門(mén)之像素操作2006-05-2308:35作者:黃燕出處:天極開(kāi)發(fā)責(zé)任編輯:方舟本節(jié)講解像素操作?! ±?4:本例在窗口繪制一個(gè)三角形,然后利用glCopyPixel函數(shù)拷貝了五次該圖形,并將這五個(gè)三角形放置在窗口的不同位置。#include#include/*設(shè)置背景色*/voidmyInit(void){ glClearColor(1.0,1.0,1.0,1.0);}/*繪制彩色三角形*/voidtriangle(void){ glBegin(GL_TRIANGLE
2、S); glColor3f(1.0,1.0,0.0); glVertex2f(10.0,10.0); glColor3f(0.0,0.3,1.0); glVertex2f(20.0,30.0); glColor3f(1.0,0.0,0.0); glVertex2f(30.0,10.0); glEnd();}voidmyDisplay(){ inti; glClear(GL_COLOR_BUFFER_BIT
3、GL_DEPTH_BUFFER_BIT); glPushMatrix(); glTranslatef(10.0,100.0,0.
4、0); triangle(); glPopMatrix(); glPushMatrix(); for(i=0;i<5;i++) { glRasterPos2i(20+i*30,10+i*5);//為像素操作指定光柵位置 glCopyPixels(50,200,500,500,GL_COLOR);//在緩存中拷貝像素 } glPopMatrix(); glFlush();}voidmyReshape(intw,inth){ glViewport(0,0,(GLsizei)w,(GLsizei)h); glMatrixMode(GL
5、_PROJECTION); glLoadIdentity(); if(w<=h) gluOrtho2D(0.0,150,0.0,150.0*(GLfloat)h/(GLfloat)w); else gluOrtho2D(0.0,150*(GLfloat)w/(GLfloat)h,0.0,150.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity();}intmain(intargc,char**argv){ glutInit(&argc,argv); glutInitDisplayMod
6、e(GLUT_SINGLE
7、GLUT_RGB
8、GLUT_DEPTH); glutInitWindowSize(500,400); glutInitWindowPosition(100,100); glutCreateWindow("copy"); myInit(); glutReshapeFunc(myReshape); glutDisplayFunc(myDisplay); glutMainLoop(); return0;} ·glRasterPos在像素操作中指定光柵位置。同樣后面的數(shù)字表示坐標(biāo)維數(shù),2表示坐標(biāo)為x、y,3表示
9、、,y、z。數(shù)字后面的字母表示參數(shù)類(lèi)型。最后帶V表示參數(shù)為指針?! oidglCopyPixels(GLintx,Glinty,GLsizeiwidth,GLsizeiheight,GLenumtype)函數(shù)將像素拷貝到緩存中。 x,y指定被拷貝像素的右下角坐標(biāo)?! idth,heigth指定被拷貝像素矩形區(qū)域的大小。 type指定拷貝數(shù)值的類(lèi)型。值為顏色、深度或膜板值。本例中為顏色?! ±?5:此例在窗口左下角寫(xiě)單詞FILE。#include#include/*字母F*/GLub
10、ytef_rasters[12]={0xc0,0xc0,0xc0,0xc0,0xc0,0xfc,0xfc,0xc0,0xc0,0xc0,0xff,0xff};/*字母I*/GLubytei_rasters[12]={0xff,0xff,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xff,0xff};/*字母L*/GLubytel_rasters[12]={0xff,0xff,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0};/*字母E*/GLu
11、bytee_rasters[12]={0xff,0xff,0xc0,0xc0,0xc0,0xff,0xff,0xc0,0xc0,0xc0,0xff,0xff};voidmyInit(void){ glPixelStorei(GL_UN