首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

OpenGL书跟资源

2012-07-30 
OpenGL书和资源y. As an additional reference, you might look at the chapter on texture mapping in 《F

OpenGL书和资源


y. As an additional reference, you might look at the chapter on texture mapping in
《Fundamentals of Three-Dimensional Computer Graphics by Alan Watt (Reading, Mass.: Addison-Wesley, 1990).》

?

Textures are simply rectangular arrays of data - for example, colordata, luminance data, or color and alpha data. The individual values ina texture array are often called texels.

?

?

OpenGL书跟资源

?

Example 9-1 : A Texture-Mappedfs Checkerboard: checker.c#include <GL/gl.h>#include <GL/glu.h>#include "aux.h"#define    checkImageWidth 64#define    checkImageHeight 64GLubyte checkImage[checkImageWidth][checkImageHeight][3];void makeCheckImage(void){    int i, j, r, c;       for (i = 0; i < checkImageWidth; i++) {        for (j = 0; j < checkImageHeight; j++) {            c = ((((i&0x8)==0)^((j&0x8))==0))*255;            checkImage[i][j][0] = (GLubyte) c;            checkImage[i][j][1] = (GLubyte) c;            checkImage[i][j][2] = (GLubyte) c;        }    }}void myinit(void){    glClearColor (0.0, 0.0, 0.0, 0.0);    glEnable(GL_DEPTH_TEST);    glDepthFunc(GL_LEQUAL);    makeCheckImage();    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);    glTexImage2D(GL_TEXTURE_2D, 0, 3, checkImageWidth,         checkImageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE,         &checkImage[0][0][0]);    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,        GL_NEAREST);    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,         GL_NEAREST);    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);    glEnable(GL_TEXTURE_2D);    glShadeModel(GL_FLAT);}void display(void){    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    glBegin(GL_QUADS);    glTexCoord2f(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0);    glTexCoord2f(0.0, 1.0); glVertex3f(-2.0, 1.0, 0.0);    glTexCoord2f(1.0, 1.0); glVertex3f(0.0, 1.0, 0.0);    glTexCoord2f(1.0, 0.0); glVertex3f(0.0, -1.0, 0.0);    glTexCoord2f(0.0, 0.0); glVertex3f(1.0, -1.0, 0.0);    glTexCoord2f(0.0, 1.0); glVertex3f(1.0, 1.0, 0.0);    glTexCoord2f(1.0, 1.0); glVertex3f(2.41421, 1.0, -1.41421);    glTexCoord2f(1.0, 0.0); glVertex3f(2.41421, -1.0,-1.41421);    glEnd();    glFlush();}void myReshape(GLsizei w, GLsizei h){    glViewport(0, 0, w, h);    glMatrixMode(GL_PROJECTION);    glLoadIdentity();    gluPerspective(60.0, 1.0*(GLfloat)w/(GLfloat)h, 1.0, 30.0);    glMatrixMode(GL_MODELVIEW);    glLoadIdentity();    glTranslatef(0.0, 0.0, -3.6);}int main(int argc, char** argv){    auxInitDisplayMode (AUX_SINGLE | AUX_RGBA | AUX_DEPTH);    auxInitPosition (0, 0, 500, 500);    auxInitWindow (argv[0]);    myinit();    auxReshapeFunc (myReshape);    auxMainLoop(display);}
?

热点排行