2013-03-02 258 views
0

我有以下工作代码(我从一个例子中了解到)。OPEN GL颜色映射

它产生一个立方体,其侧面着色不同。 有没有什么办法可以将颜色分配给边上的每个(一组)像素,具体取决于它们的位置或某种模拟。有些东西就像立方体表面上的标量场的彩色贴图......? 有人可以给我一个这样做的任意表面的例子吗?

#include <GL/glut.h> 
#include <GL/glu.h> 
#include <GL/freeglut_ext.h> 

void init(void) 
{ 
glClearColor(0,0,0,0); 
glShadeModel(GL_FLAT); 
} 

void DrawCube(void) 
{ 
glLoadIdentity(); 
gluLookAt(0, 10, 10, 0, 1, 0, 0, -2, -35.7); 
glBegin(GL_QUADS); 

//face in xy plane 
glColor3f(0.12, 0.91, 0.02);//this the color with which complete cube is drawn. 
glVertex3f(0,0 ,0); 
glVertex3f(5, 0, 0); 
glVertex3f(5, 5, 0); 
glVertex3f(0, 5, 0); 

//face in yz plane 
glColor3f(1, 0.23, 0.56); 
glVertex3f(0, 0, 0); 
glVertex3f(0, 0, 5); 
glVertex3f(0, 5, 0); 
glVertex3f(0, 5, 5); 

//face in zx plance 
glColor3f(0.45, .81, 1); 
glVertex3f(0, 0, 0 ); 
glVertex3f(0, 0, 5); 
glVertex3f(5, 0, 5); 
glVertex3f(5, 0, 0); 

//|| to xy plane. 
glColor3f(0.23, 0.78,0.13); 
glVertex3f(0, 0, 5); 
glVertex3f(5, 0, 5); 
glVertex3f(5, 5, 5); 
glVertex3f(0, 5, 5); 

//|| to yz plane 
glColor3f(0.73, 0.58, 0.58); 
glVertex3f(0,0 ,5); 
glVertex3f(5, 0, 5); 
glVertex3f(5, 5, 5); 
glVertex3f(0, 5, 5); 

//|| to zx plane 
glVertex3f(0.58, 0, 0.82); 
glVertex3f(0, 5, 0 ); 
glVertex3f(0, 5, 5); 
glVertex3f(5, 5, 5); 
glVertex3f(5, 5, 0); 
glEnd(); 
glFlush(); 
} 


void reshape(int w,int h){ 

glViewport(0, 0, (GLsizei)w, (GLsizei)h); 

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glFrustum(-1, 1, -1, 1, 1.5, 20); 
glMatrixMode(GL_MODELVIEW); 
} 

int main(int argc, char** argv){ 

glutInit(&argc, argv);//we initizlilze the glut. functions 
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); 
glutInitWindowPosition(800, 800); 
glutCreateWindow(argv[1]); 
init(); 
glutDisplayFunc(DrawCube); 
glutReshapeFunc(reshape); 
glutMainLoop(); 
return 0; 
} 
+2

关键字:**纹理** - 网上有很多关于OpenGL纹理的资源,所以我不再重复。 – Kos 2013-03-02 09:53:48

回答