关闭

简单立方体纹理贴图

标签: 三维opengl纹理位图
419人阅读 评论(0) 收藏 举报
分类:

来自nehe opengl的中文翻译,参考了http://www.yakergong.net/nehe/


1、加载纹理

// Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit
if (TextureImage[0]=LoadBMP("Data/Crate.bmp"))
{
Status=TRUE; // Set The Status To TRUE


glGenTextures(3, &texture[0]); // Create Three Textures


// Create Nearest Filtered Texture
glBindTexture(GL_TEXTURE_2D, texture[0]);
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, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);


// Create Linear Filtered Texture
glBindTexture(GL_TEXTURE_2D, texture[1]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);


// Create MipMapped Texture
glBindTexture(GL_TEXTURE_2D, texture[2]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
}


2、绑定纹理和画图

glBindTexture(GL_TEXTURE_2D, texture[filter]);
//glDisable(GL_LIGHTING);


glBegin(GL_QUADS);
// Front Face
//glNormal3f( 0.0f, 0.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
// Back Face
glNormal3f( 0.0f, 0.0f,-1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
// Top Face
glNormal3f( 0.0f, 1.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);
// Bottom Face
glNormal3f( 0.0f,-1.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
// Right face
glNormal3f( 1.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
// Left Face
glNormal3f(-1.0f, 0.0f, 0.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);
glEnd();



0
0
查看评论

渲染世界的OPENGL<13>纹理进阶-矩形及立方体贴图

1.矩形纹理对于二维纹理图像来说,另一个有用的选项是纹理目标:GL_TEXTURE_RECTANGLE. 纹理特点:不能进行MIP贴图,意味着我们只能够加载glTexImage2D的第0层。 纹理坐标不是标准化的。这就意味着纹理坐标实际上是对像素寻址,而不是从0到1的范围覆盖图像的。 注意纹理...
  • memories_sunset
  • memories_sunset
  • 2016-09-25 17:29
  • 1067

OpenGL纹理贴图 旋转的立方体

由于vs2008没有对glaux的支持,所以该工程需要在vc6.0里面实现,对vc6.0的opengl设置在上一篇博客中源码如下:#include //引用相关包 #include #include #include #pragma comment(lib, "openG...
  • doublepengchao
  • doublepengchao
  • 2011-01-07 22:40
  • 2027

Android OpenGL ES正方体纹理贴图(每个面一张)

这是旋转正方体纹理贴图的程序,分为lian
  • zhangjikuan
  • zhangjikuan
  • 2014-04-07 21:20
  • 3023

OpenGL 核心技术之立方体贴图

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。CSDN视频网址:http://edu.csdn.net/lecturer/144...
  • jxw167
  • jxw167
  • 2017-02-14 10:11
  • 2466

立方体纹理贴图代码

#include "stdafx.h" #include #include #include #include #include #include #include GLuint texture[6]; GLfloat xrot=0.0f; // X Rotati...
  • chenyu19880302
  • chenyu19880302
  • 2013-09-03 21:41
  • 1064

opengl 绘制简单的带纹理贴图的立方体

#include #include #include #include #include #include #include "ourProgram.h" #include "SOIL.h" using namespace std; int ...
  • IAccepted
  • IAccepted
  • 2015-03-29 13:00
  • 4795

3D立方体纹理贴图源代码

////////////////////////////////////////////////////////////////////////// //说明        :Direct3D成长日记(05):简单几何模型绘制。...
  • lfslxj
  • lfslxj
  • 2012-07-16 11:40
  • 178

Cocos2dx-OpenGL ES2.0教程:纹理贴图(6)

在上一篇文章中,我们介绍了如何绘制一个立方体,里面涉及的知识点有VBO(Vertex Buffer Object)、IBO(Index Buffer Object)和MVP(Modile-View-Projection)变换。 本文将在教程4的基础之上,添加纹理贴图支持。最后,本文会把纹理贴图扩...
  • dingkun520wy
  • dingkun520wy
  • 2015-11-18 17:41
  • 1762

osg,纹理贴图,地球、月球、火星

createSphere.h #include #include #include osg::ref_ptr createSphere(float radius) { osg::ref_ptr sphereShape = new osg::Sphere(osg::Vec3(2.5,0.0...
  • smells2
  • smells2
  • 2012-02-22 16:20
  • 7559

WebGL自学教程——WebGL示例:7.2 改进的立方体程序(下):立方图纹理

7.2 改进的立方体程序(下):立方图纹理        除了2D纹理,WebGL还支持立方图纹理。我们知道立方体有六个面,你可以简单地把立方图纹理当成一个立方体,只不过该立方体的每个面是一个2D纹理。换言之,六个单独的2D纹理组成了一个完整的立方图纹理。...
  • tiewen
  • tiewen
  • 2011-10-24 15:15
  • 3495
    个人资料
    • 访问:73445次
    • 积分:1302
    • 等级:
    • 排名:千里之外
    • 原创:50篇
    • 转载:71篇
    • 译文:0篇
    • 评论:8条
    最新评论