opengl 纹理贴图的使用 10
今天试了一下球面纹理映射,但没有映射出图案,求各位帮忙看下部分源代码如下#include"stdafx.h"#include<GL/glut.h>#include<gl/...
今天试了一下球面纹理映射,但没有映射出图案,求各位 帮忙看下
部分源代码如下
#include "stdafx.h"
#include<GL/glut.h>
#include<gl/glaux.h>
GLuint textures[1];//用于存储分配到的ID值
void Init()
{
AUX_RGBImageRec* TextureImage[1]; //创建纹理保存空间
TextureImage[0] = auxDIBImageLoadA("1.bmp"); //载入.bmp文件
glGenTextures(1,textures);//将分配到的ID值标记为“已用”
glBindTexture(GL_TEXTURE_2D,textures[0]);//后面对于GL_TEXTTURE_2D的操作将应用于textures
gluBuild2DMipmaps(GL_TEXTURE_2D, 0, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP);
glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP);
}
void sphere()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glBindTexture(GL_TEXTURE_2D, textures[0]);
glutSolidSphere(1.0,50,50);
glFlush();
glDisable(textures[1]);
} 展开
部分源代码如下
#include "stdafx.h"
#include<GL/glut.h>
#include<gl/glaux.h>
GLuint textures[1];//用于存储分配到的ID值
void Init()
{
AUX_RGBImageRec* TextureImage[1]; //创建纹理保存空间
TextureImage[0] = auxDIBImageLoadA("1.bmp"); //载入.bmp文件
glGenTextures(1,textures);//将分配到的ID值标记为“已用”
glBindTexture(GL_TEXTURE_2D,textures[0]);//后面对于GL_TEXTTURE_2D的操作将应用于textures
gluBuild2DMipmaps(GL_TEXTURE_2D, 0, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP);
glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP);
}
void sphere()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glBindTexture(GL_TEXTURE_2D, textures[0]);
glutSolidSphere(1.0,50,50);
glFlush();
glDisable(textures[1]);
} 展开
1个回答
2015-05-26 · 知道合伙人互联网行家
关注
展开全部
UVW贴图是3ds Max的纹理坐标修改器(Modifier),用于在Mesh的顶点上生成纹理的贴图坐标。一般来讲Max生成纹理坐标有几种标准方法,体现在UVW修改器的参数展卷中,常见的有平面,球形,长方体,柱形等等,这些几何体表面的每个点都对应一个纹理坐标(事先定义好的)。那么几何体顶点的纹理坐标如何定义呢?做一条从顶点开始,沿顶点法线方向的射线,射线和上述几何体平面的交点对应的纹理坐标就是该顶点的纹理坐标。
追问
glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP);
glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
这四行就是,使用opengl生成的坐标
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询