`
linshenqi
  • 浏览: 35088 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在OpenGL中使用纹理(2D)

阅读更多
搞OpenGL好几天了,现在开始写点东西。有问题请参考nehe的opengl教程。

1.载入纹理图片
FILE *File;
File=fopen(Filename,"r");  //打开纹理图片,Filename为文件路径



2.设置纹理
AUX_RGBImageRec *TextureImage[1];  //定义缓存
memset(TextureImage,0,sizeof(void *)*1);  //分配空间
if(TextureImage[0] = &auxDIBImageLoad(Filename)) //载入纹理成功
{
    glGenTextures(1, &texture[0]);  //创建纹理
     glBindTexture(GL_TEXTURE_2D, texture[0]);  //绑定纹理到创建的空间
     glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX,TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);  //载入纹理
    glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);  //设置纹理过滤模式 
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    if (TextureImage[0])  //释放纹理缓存空间		
    {
	if (TextureImage[0]->data)			
	{
	   free(TextureImage[0]->data);			
         }
         free(TextureImage[0]);				
    }
}


3.使用纹理
glLoadIdentity();
glTranslatef(0.0f,0.0f,-5.0f);
glBindTexture(GL_TEXTURE_2D, texture[0]);  //设置纹理,此步必须在glbegin之前
glBegin(GL_QUADS);  //画一个矩形
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f); //纹理的范围从0.0~1.0,分别于矩形的四角对应
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();


最后别忘了在winmain中加入glEnable(GL_TEXTURE_2D);作用是开启纹理。当然还有头文件#include"stdio.h"
分享到:
评论

相关推荐

    openGL中二维纹理的生成

    在着色器中,你可以使用`gl_TexCoord`(旧版OpenGL)或`in vec2 texCoord`(OpenGL 3.x及更高版本)来访问这些纹理坐标,并使用`texture2D`函数采样纹理。 ```glsl vec4 color = texture2D(u_TextureSampler, v_...

    在OpenGL中,使用纹理显示图形.rar_OPENGL 纹理_Opengl纹理_纹理OpenGL

    OpenGL是一种强大的图形库,用于创建2D和3D图形,被广泛应用于游戏开发、科学可视化、工程设计等领域。在OpenGL中,纹理是图形渲染的重要组成...通过阅读和学习这些代码,你将能够更好地理解OpenGL纹理工作的全过程。

    罗大柚OpenGL系列教程_2D纹理渲染文字

    在OpenGL中,纹理是指存储在内存中的图像数据,可以被映射到几何形状上,形成丰富多彩的表面。2D纹理就是具有两个维度(宽度和高度)的图像,常用于渲染平面对象,如屏幕上的文字。 在iOS环境下,使用GLKit来处理...

    OPENGL_TEXTURE.zip_OPENGL 纹理_Opengl纹理_opengl 贴图_opengl贴图_贴图

    总的来说,OpenGL纹理贴图是3D图形渲染中的核心部分,通过合理的纹理管理和应用,可以极大地提升图形质量。理解并掌握这一技术,对于任何想在游戏开发、科学可视化等领域工作的人来说,都是必不可少的基础知识。

    OPENGL光照和纹理技术实例.rar

    这个"OPENGL光照和纹理技术实例.rar"压缩包包含了关于如何在OpenGL中应用光照和纹理的关键概念和技术的实例。以下是这些主题的详细解释: 光照在OpenGL中是通过一组称为光源(light sources)的对象来实现的,它们...

    易语言源码OPENGL应用中纹理贴图的方法.rar

    通过查看和学习这个源码,你可以深入理解OpenGL纹理贴图的流程,以及如何在易语言环境中操作OpenGL。 `源码使用说明.txt`文件可能包含了一些关于如何编译、运行和理解代码的指南。建议先阅读此文件,以确保正确地...

    OpenGL中纹理应用

    在本教程中,我们将深入探讨OpenGL如何处理纹理以及如何实现纹理映射。 首先,我们要了解什么是纹理。在OpenGL中,纹理是一个二维图像,可以被贴附到3D模型的表面上,为模型增加细节和真实感。纹理通常以.jpg、.png...

    openGl绘制茶壶纹理

    在这个主题中,我们将深入探讨如何在OpenGL中绘制茶壶,并为其添加纹理贴图。茶壶是计算机图形学中的一个经典对象,常常被用来展示3D图形渲染技术。 首先,我们需要理解OpenGL的工作原理。OpenGL是一个状态机,它...

    c语言中使用opengl 贴纹理

    在C语言中使用OpenGL进行纹理贴图是一项基本的图形编程技术,它允许我们在3D模型或者2D平面上应用各种图像,从而增加视觉效果。OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形。在这个过程中,我们...

    opengles绘制纹理

    在本主题“opengles绘制纹理”中,我们将深入探讨如何在OpenGL ES环境中加载和绘制纹理,以增强图形渲染的质量和表现力。 1. **纹理的概念** 在计算机图形学中,纹理是指附加到几何形状上的二维图像数据,用于给...

    OPENGL应用中纹理贴图的方法源码

    片段着色器中使用`texture()`函数对纹理进行采样,这个函数会根据纹理坐标和当前的纹理对象返回颜色值。采样结果可以与其他颜色值混合,生成最终的颜色输出。 7. **纹理单元与多纹理** OpenGL支持多个纹理单元,...

    OpenGL.rar_OPENGL 纹理_Opengl纹理_opengl添加纹理_opengl纹理贴图

    在描述中提到的“最简单的立方体六个表面添加不同纹理”的程序,展示了一个基础的OpenGL纹理应用。这个立方体的每个面都被不同的纹理覆盖,这通常通过将纹理坐标映射到几何体的顶点来实现。纹理坐标与顶点坐标一起被...

    opengles多重纹理与过程纹理

    在OpenGL ES中使用这两种技术时,有几点需要注意: 1. **纹理坐标**:确保正确设置纹理坐标,以便正确地将纹理应用到几何对象上。 2. **纹理过滤**:可以使用`glTexParameter`设置纹理过滤模式,如线性过滤(GL_...

    opengl渲染到纹理技术

    首先,我们要理解纹理在OpenGL中的基本概念。纹理是存储在GPU内存中的一组像素数据,可以被用于为3D模型或者2D图像添加细节和色彩。纹理坐标系统通常与3D坐标系统是分离的,使得我们可以灵活地将纹理应用到不同的...

    OPENGL应用中纹理贴图的方法.rar

    OpenGL是计算机图形学中广泛使用的库,用于在各种操作系统和硬件平台上创建2D和3D图形。纹理贴图是OpenGL中的一个核心概念,它允许我们在3D模型上应用图像,从而增加视觉细节和真实感。在OpenGL应用中实现纹理贴图...

    OpenGL.rar_OPENGL 纹理_opengl_opengl 纹理贴图_opengl纹理贴图_镂空效果

    通过学习这些资源,开发者可以深入理解OpenGL纹理贴图和镂空效果的实现方法,并将其应用到自己的项目中。 总之,OpenGL的纹理贴图技术和镂空效果是提升3D图形表现力的重要手段。通过理解和掌握这些概念,开发者可以...

    OpenGL动态光照纹理的vc工程

    在这个“OpenGL动态光照纹理的vc工程”中,开发者可能已经实现了一个Windows平台下的示例程序,使用Visual Studio 2010进行编译和运行,该程序可能演示了如何在OpenGL环境下处理光照和纹理贴图的动态变化。...

    OpenGL 纹理 二重纹理

    二重纹理是OpenGL扩展的一部分,允许在一次渲染操作中使用两个独立的纹理。在3D场景中,这可能用于实现混合材质、环境映射或者创建复杂的光照效果。 要启用二重纹理,你需要检查你的硬件是否支持EXT_texture_env_...

    OpenGlEs显示纹理例子程序

    1. **加载纹理**:使用`GLUtils.texImage2D()`函数加载BMP文件到OpenGL纹理对象。首先,需要创建一个纹理ID(`glGenTextures()`),然后绑定这个ID(`glBindTexture()`)。接着,读取BMP文件数据并传入`texImage2D()...

    OPENGL多纹理程序

    最后,在顶点着色器中指定纹理坐标,并在片段着色器中使用`gl_TEXTURE0 + unit`来访问相应的纹理单元,通过`texture2D`函数进行纹理采样。 在提供的压缩包文件中,"www.pudn.com.txt"可能包含了一些关于程序源代码...

Global site tag (gtag.js) - Google Analytics