纹理映射示例
来源:互联网 发布:php addslashes缺点 编辑:程序博客网 时间:2024/06/04 19:31
要包含OpenGL的库
#include <GL/glut.h>#include <stdlib.h>#include <stdio.h>#define checkImageWitdth 64#define checkImageHight 64static GLubyte checkImage[checkImageHight][checkImageWitdth][4];static GLuint textName;//产生纹理图像void makeCheakImages(void){int i,j,c;for (i=0;i<checkImageHight;i++){for (j=0;j<checkImageWitdth;j++){c=((((i&0x8)==0)^((j&0x8))==0))*255;if (c==255){checkImage[i][j][0] = (GLubyte)180;checkImage[i][j][1] = (GLubyte)180;checkImage[i][j][2] = (GLubyte)180;checkImage[i][j][3] = (GLubyte)255;}else{checkImage[i][j][0] = (GLubyte)c;checkImage[i][j][1] = (GLubyte)c;checkImage[i][j][2] = (GLubyte)c;checkImage[i][j][3] = (GLubyte)255;}}}}void init(){glClearColor(1,1,1,0);glShadeModel(GL_FLAT);glEnable(GL_DEPTH_TEST);makeCheakImages();glPixelStorei(GL_UNPACK_ALIGNMENT,1);glGenTextures(1,&textName);glBindTexture(GL_TEXTURE_2D,textName);glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,checkImageWitdth,checkImageHight,0,GL_RGBA,GL_UNSIGNED_BYTE,checkImage);//控制滤波glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);}void display(){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);glEnable(GL_TEXTURE_2D);glBegin(GL_QUADS);glTexCoord2f(0,0);glVertex3f(-2.0,-1.0,0);glTexCoord2f(0,1);glVertex3f(-2.0,1.0,0);glTexCoord2f(1,1);glVertex3f(0,1.0,0); glTexCoord2f(1,0);glVertex3f(0,-1.0,0);glTexCoord2f(0,0);glVertex3f(1.0,-1.0,0);glTexCoord2f(0,1);glVertex3f(1.0,1.0,0);glTexCoord2f(1,1);glVertex3f(2.41421,1.0,-1.41421);glTexCoord2f(1,0);glVertex3f(2.41421,-1.0,-1.41421);glEnd();glFlush();glDisable(GL_TEXTURE_2D);}void reshape(int w,int h){glViewport(0,0,(GLsizei)w,(GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(60.0,(GLfloat)w/(GLfloat)h,1.0,30.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();glTranslatef(0,0,-3.6);}void main(int argc,char ** argv){glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);glutInitWindowSize(500,500);glutInitWindowPosition(100,100);glutCreateWindow("纹理映射示例");init();glutDisplayFunc(display);glutReshapeFunc(reshape);glutMainLoop();}
- 纹理映射示例
- 纹理映射
- 纹理映射
- 纹理映射
- 纹理映射
- 纹理映射
- 纹理映射
- 纹理映射
- 纹理映射
- 纹理映射
- 纹理映射
- 纹理映射
- 第九讲 纹理映射
- Direct3D纹理映射
- 纹理映射基础
- opengl 纹理映射
- 纹理映射和坐标
- openGL纹理映射
- bada学习-(四)应用模块
- 位域
- 搜狐畅游笔试+面试
- 音频播放
- Microsoft Office Outlook 2003 如何在服務器保留郵件備份
- 纹理映射示例
- WinExec() and ShellExecute() 的用法
- 给大家一些oracle性能优化的建议(转)
- Excel VBA编程常用语句300句
- 招聘链接
- C++ 类的大小
- 编程技术面试的五大要点
- Boost 1.47.0编译
- 解决C++ 调用 C 函数时unresolved external symbol "int __cdecl addInC1(void)" (?addInC1@@YAHXZ)之类的错误