【OpenGL】纹理贴图实例-棋盘
来源:互联网 发布:银行数据标准定义规范 编辑:程序博客网 时间:2024/05/21 17:31
简单的纹理贴图实例,来学习OpenGL的功能
//main.h
#if !defined_MAIN_H_#define _MAIN_H_#include<gl\glut.h>#define WIDTH 64#define HEIGHT 64GLubyte Image[WIDTH][HEIGHT][4];static GLuint texName;GLint WinWidth;GLint WinHeight;void Initialization(void);void OnDisplay(void);void OnReshape(int,int);void keyboard (unsigned char key, int x, int y);void MakeImage(void);void Initialization(void);#endif
//main.cpp
// 纹理映射实例.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "main.h"#include <stdlib.h>int main(int argc, char* argv[]){glutInit(&argc,argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);glutInitWindowSize(480,480);glutInitWindowPosition(100, 100);glutCreateWindow("绘制sanwei");Initialization();glutReshapeFunc(OnReshape);glutDisplayFunc(OnDisplay);glutKeyboardFunc(keyboard);glutMainLoop();return 0; }//创建位图函数void MakeImage(void){int i,j,c;for(i=0;i< HEIGHT;i++){for(j=0;j<WIDTH;j++){c=(((i & 0x8) == 0) ^((j & 0x8) == 0)) *255;//计算纹理颜色Image[i][j][0] = GLubyte(c);Image[i][j][1] = GLubyte(c);Image[i][j][2] = GLubyte(c);Image[i][j][3] = GLubyte(255);}}}void Initialization(void){glClearColor (0.0, 0.0, 0.0, 0.0);glShadeModel(GL_FLAT);glEnable(GL_DEPTH_TEST);MakeImage();glPixelStorei(GL_UNPACK_ALIGNMENT, 1);glGenTextures(1, &texName);glBindTexture(GL_TEXTURE_2D, texName);//设置纹理参数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);glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, WIDTH, HEIGHT, 0, GL_RGBA, GL_UNSIGNED_BYTE, Image);}//显示回调函数void OnDisplay(void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glEnable(GL_TEXTURE_2D);glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);glBindTexture(GL_TEXTURE_2D, texName);glBegin(GL_QUADS);//指定纹理坐标glTexCoord2f(0.0f,0.0f);glVertex3f(-2.0f,-2.0f,0.0f);glTexCoord2f(0.0f,1.0f);glVertex3f(-2.0f,2.0f,0.0f);glTexCoord2f(1.0f,1.0f);glVertex3f(2.0f,2.0f,0.0f);glTexCoord2f(1.0f,0.0f);glVertex3f(2.0f,-2.0f,0.0f);/*//其他效果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();glDisable(GL_TEXTURE_2D);}//重绘回调函数void OnReshape(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, 0.0, -3.6);} //按Esc退出程序void keyboard (unsigned char key, int x, int y){switch (key) {case 27:exit(0);break;default:break;}}效果图:
0 0
- 【OpenGL】纹理贴图实例-棋盘
- 解读OpenGL棋盘纹理贴图
- opengl es纹理贴图效果实例
- OpenGL纹理贴图 JPEG纹理
- OpenGL纹理贴图 JPEG纹理
- OpenGL ES纹理贴图
- OpenGL ES纹理贴图
- opengl 关于纹理贴图
- OpenGL 纹理贴图
- OpenGL--纹理贴图基础
- Qt OpenGL----纹理贴图
- OpenGL ES纹理贴图
- OpenGL纹理贴图
- [转] opengl ---- 纹理贴图
- OpenGL ES 纹理贴图
- opengl 纹理贴图
- OpenGL ES: 棋盘纹理
- 改造的opengl纹理贴图
- 关于高可用的系统
- 转载-- python queue interpretation
- 数据读取器与指定的“LMSoft.Zhaopin.DAL.ArticleVote”不兼容。类型“ArticleMatcthId”的成员在同名的数据读取器中没有对应的列
- OCX控件ID对应关系的梳理
- 这多年来我一直在钻研的技术
- 【OpenGL】纹理贴图实例-棋盘
- 面向对象的单片机编程
- apache+php服务器环境搭建
- 剑指Offer--我用JAVA做(二)
- 【C++】 C++标准模板库(十) 双向队列
- 20170106 学习支持向量机
- log4j的使用详细解析
- js发起轮询
- 性能测试应该怎么做?