搞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"
分享到:
相关推荐
在着色器中,你可以使用`gl_TexCoord`(旧版OpenGL)或`in vec2 texCoord`(OpenGL 3.x及更高版本)来访问这些纹理坐标,并使用`texture2D`函数采样纹理。 ```glsl vec4 color = texture2D(u_TextureSampler, v_...
OpenGL是一种强大的图形库,用于创建2D和3D图形,被广泛应用于游戏开发、科学可视化、工程设计等领域。在OpenGL中,纹理是图形渲染的重要组成...通过阅读和学习这些代码,你将能够更好地理解OpenGL纹理工作的全过程。
在OpenGL中,纹理是指存储在内存中的图像数据,可以被映射到几何形状上,形成丰富多彩的表面。2D纹理就是具有两个维度(宽度和高度)的图像,常用于渲染平面对象,如屏幕上的文字。 在iOS环境下,使用GLKit来处理...
总的来说,OpenGL纹理贴图是3D图形渲染中的核心部分,通过合理的纹理管理和应用,可以极大地提升图形质量。理解并掌握这一技术,对于任何想在游戏开发、科学可视化等领域工作的人来说,都是必不可少的基础知识。
这个"OPENGL光照和纹理技术实例.rar"压缩包包含了关于如何在OpenGL中应用光照和纹理的关键概念和技术的实例。以下是这些主题的详细解释: 光照在OpenGL中是通过一组称为光源(light sources)的对象来实现的,它们...
通过查看和学习这个源码,你可以深入理解OpenGL纹理贴图的流程,以及如何在易语言环境中操作OpenGL。 `源码使用说明.txt`文件可能包含了一些关于如何编译、运行和理解代码的指南。建议先阅读此文件,以确保正确地...
在本教程中,我们将深入探讨OpenGL如何处理纹理以及如何实现纹理映射。 首先,我们要了解什么是纹理。在OpenGL中,纹理是一个二维图像,可以被贴附到3D模型的表面上,为模型增加细节和真实感。纹理通常以.jpg、.png...
在这个主题中,我们将深入探讨如何在OpenGL中绘制茶壶,并为其添加纹理贴图。茶壶是计算机图形学中的一个经典对象,常常被用来展示3D图形渲染技术。 首先,我们需要理解OpenGL的工作原理。OpenGL是一个状态机,它...
在C语言中使用OpenGL进行纹理贴图是一项基本的图形编程技术,它允许我们在3D模型或者2D平面上应用各种图像,从而增加视觉效果。OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形。在这个过程中,我们...
在本主题“opengles绘制纹理”中,我们将深入探讨如何在OpenGL ES环境中加载和绘制纹理,以增强图形渲染的质量和表现力。 1. **纹理的概念** 在计算机图形学中,纹理是指附加到几何形状上的二维图像数据,用于给...
片段着色器中使用`texture()`函数对纹理进行采样,这个函数会根据纹理坐标和当前的纹理对象返回颜色值。采样结果可以与其他颜色值混合,生成最终的颜色输出。 7. **纹理单元与多纹理** OpenGL支持多个纹理单元,...
在描述中提到的“最简单的立方体六个表面添加不同纹理”的程序,展示了一个基础的OpenGL纹理应用。这个立方体的每个面都被不同的纹理覆盖,这通常通过将纹理坐标映射到几何体的顶点来实现。纹理坐标与顶点坐标一起被...
在OpenGL ES中使用这两种技术时,有几点需要注意: 1. **纹理坐标**:确保正确设置纹理坐标,以便正确地将纹理应用到几何对象上。 2. **纹理过滤**:可以使用`glTexParameter`设置纹理过滤模式,如线性过滤(GL_...
首先,我们要理解纹理在OpenGL中的基本概念。纹理是存储在GPU内存中的一组像素数据,可以被用于为3D模型或者2D图像添加细节和色彩。纹理坐标系统通常与3D坐标系统是分离的,使得我们可以灵活地将纹理应用到不同的...
OpenGL是计算机图形学中广泛使用的库,用于在各种操作系统和硬件平台上创建2D和3D图形。纹理贴图是OpenGL中的一个核心概念,它允许我们在3D模型上应用图像,从而增加视觉细节和真实感。在OpenGL应用中实现纹理贴图...
通过学习这些资源,开发者可以深入理解OpenGL纹理贴图和镂空效果的实现方法,并将其应用到自己的项目中。 总之,OpenGL的纹理贴图技术和镂空效果是提升3D图形表现力的重要手段。通过理解和掌握这些概念,开发者可以...
在这个“OpenGL动态光照纹理的vc工程”中,开发者可能已经实现了一个Windows平台下的示例程序,使用Visual Studio 2010进行编译和运行,该程序可能演示了如何在OpenGL环境下处理光照和纹理贴图的动态变化。...
二重纹理是OpenGL扩展的一部分,允许在一次渲染操作中使用两个独立的纹理。在3D场景中,这可能用于实现混合材质、环境映射或者创建复杂的光照效果。 要启用二重纹理,你需要检查你的硬件是否支持EXT_texture_env_...
1. **加载纹理**:使用`GLUtils.texImage2D()`函数加载BMP文件到OpenGL纹理对象。首先,需要创建一个纹理ID(`glGenTextures()`),然后绑定这个ID(`glBindTexture()`)。接着,读取BMP文件数据并传入`texImage2D()...
最后,在顶点着色器中指定纹理坐标,并在片段着色器中使用`gl_TEXTURE0 + unit`来访问相应的纹理单元,通过`texture2D`函数进行纹理采样。 在提供的压缩包文件中,"www.pudn.com.txt"可能包含了一些关于程序源代码...