关于纹理映射的问题!
来源:百度知道 编辑:UC知道 时间:2024/09/28 09:23:51
最近刚接触纹理映射,遇到了问题,请大虾帮忙!
我写了个纹理载入类,代码如下:
#ifndef __CTEXTURE_H__
#define __CTEXTURE_H__
#include "stdafx.h"
class CTexture
{
public:
CTexture();
~CTexture();
public:
void Load(char *filename); //载入纹理
AUX_RGBImageRec *auxIR;
GLuint ID; //纹理ID
};
#endif
函数的实现如下:
CTexture::~CTexture ()
{
if (auxIR)
{
delete auxIR;
auxIR = 0;
}
glDeleteTextures(1 , &ID);
}
CTexture::CTexture ()
{
}
void CTexture::Load (char *filename)
{
memset(&auxIR , 0 , sizeof(void *));
auxIR = auxDIBImageLoad(filename);
glGenTextures(1 , &ID);
glBindTexture(GL_TEXTURE_2D , ID);
glTexParameteri(GL_TEXTURE_2D , GL_TEXTURE_WRAP_S , GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D , GL_TEXTURE_WRAP_S , GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D , GL_TEXTURE_MAG
我写了个纹理载入类,代码如下:
#ifndef __CTEXTURE_H__
#define __CTEXTURE_H__
#include "stdafx.h"
class CTexture
{
public:
CTexture();
~CTexture();
public:
void Load(char *filename); //载入纹理
AUX_RGBImageRec *auxIR;
GLuint ID; //纹理ID
};
#endif
函数的实现如下:
CTexture::~CTexture ()
{
if (auxIR)
{
delete auxIR;
auxIR = 0;
}
glDeleteTextures(1 , &ID);
}
CTexture::CTexture ()
{
}
void CTexture::Load (char *filename)
{
memset(&auxIR , 0 , sizeof(void *));
auxIR = auxDIBImageLoad(filename);
glGenTextures(1 , &ID);
glBindTexture(GL_TEXTURE_2D , ID);
glTexParameteri(GL_TEXTURE_2D , GL_TEXTURE_WRAP_S , GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D , GL_TEXTURE_WRAP_S , GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D , GL_TEXTURE_MAG
1,初始化的时候glEnable(GL_TEXTURE_2D);启用纹理
2,glBindTexture(GL_TEXTURE_2D , boxTexture.ID);这个地方应该是绑定纹理的,确定你有CTexture对象并且初始化载入图像
3,你在载入图像的地方插入断点,看看图像是不是载入了。
图像是bmp格式,此图像的宽和高必须是2的n次方;宽度和高度最小必须是64象素;并且出于兼容性的原因,图像的宽度和高度不应超过256象素。如果您的原始素材的宽度和高度不是64,128,256象素的话,使用图像处理软件重新改变图像的大小试一试。