读书人

OpenGL贴图有关问题

发布时间: 2012-12-23 11:28:15 作者: rapoo

OpenGL贴图问题
初学者,不知道怎么用OpenGL将位图贴到球体上还不影响球体转动,就像地球仪一样,希望大侠指点,最好能有源代码和注释~~~额~~要用C语言写的~~
[最优解释]
看看这个
http://download.csdn.net/detail/waitformyfriends/3721978
[其他解释]
#undef UNICODE
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#include <GL/glut.h>

void myinit(void);
void makeStripeImage(void);
void CALLBACK display(void);
void CALLBACK myReshape(GLsizei w, GLsizei h);

#define stripeImageWidth 64
GLubyte stripeImage[3*stripeImageWidth];

void makeStripeImage(void)
{
int j;

for (j = 0; j < stripeImageWidth; j++)
{
stripeImage[3*j] = 255;
stripeImage[3*j+1] =255-2*j;
stripeImage[3*j+2] =255;
}
}



GLfloat sgenparams[] = {1.0, 1.0, 1.0, 0.0};

void myinit(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);

makeStripeImage();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage1D(GL_TEXTURE_1D, 0, 3, stripeImageWidth, 0, GL_RGB, GL_UNSIGNED_BYTE, stripeImage);

glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGenfv(GL_S, GL_OBJECT_PLANE, sgenparams);

glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_1D);
glEnable(GL_CULL_FACE);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_AUTO_NORMAL);
glEnable(GL_NORMALIZE);
glFrontFace(GL_CW);
glCullFace(GL_BACK);
glMaterialf (GL_FRONT, GL_SHININESS, 64.0);
}

void CALLBACK display(void)
{
glClear(GL_COLOR_BUFFER_BIT
[其他解释]

引用:
#undef UNICODE
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#include <GL/glut.h>

void myinit(void);
void makeStripeImage(void);
void CALLB……
这个显示无法编译,找不到exe文件
[其他解释]
GL_DEPTH_BUFFER_BIT);
glPushMatrix ();
glRotatef(25.0, 1.0, 0.0, 0.0);
auxSolidTeapot(1.5);
glPopMatrix ();
glFlush();
}

void CALLBACK myReshape(GLsizei w, GLsizei h)
{
float a=3.5;

glViewport(0, 0, w, h);


glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h)
glOrtho (-a, a, -a*(GLfloat)h/(GLfloat)w, a*(GLfloat)h/(GLfloat)w, -a, a);
else
glOrtho (-a*(GLfloat)w/(GLfloat)h, a*(GLfloat)w/(GLfloat)h, -a, a, -a, a);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

void main(void)
{
auxInitDisplayMode (AUX_SINGLE
[其他解释]
AUX_RGBA);
auxInitPosition (0, 0, 500, 500);
auxInitWindow ("Teapot TextureMapping");
myinit();
auxReshapeFunc (myReshape);
auxMainLoop(display);
}
[其他解释]

引用:
看看这个
http://download.csdn.net/detail/waitformyfriends/3721978

这个下到一半就不能下了啊~~~然后解压不出来~~

读书人网 >VC/MFC

热点推荐