在VS2005里面用OPENGL怎么加载的纹理贴不到立方体表面上去?代码跟NEHE的第6课是一个样。

xqhrs232 2009-11-25 11:50:23
在VS2005里面用OPENGL怎么加载的纹理贴不到立方体表面上去?代码跟NEHE的第6课是一个样。
...全文
328 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
zq1129887912 2012-09-04
  • 打赏
  • 举报
回复
求教育。。也是这个问题。。什么解决啊。。
whsongshi 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 xqhrs232 的回复:]
C/C++ code


InitOpenGL( );

if (!LoadGLTextures()) // Jump To Texture Loading Routine ( NEW )
{
return FALSE; /……
[/Quote]
这个能不能说清楚一点怎么弄,我现在刚刚学习OPenGL..也是纹理贴图贴不上去,只有一个正方体旋转,怎么解决啊。。谢谢了,对了,我用的是VC6.O
lizhaodongli 2010-12-16
  • 打赏
  • 举报
回复
if (TextureImage[0]=LoadBMP((char*)"Data/NeHe.bmp")) //在VC60是是可以的.
在VS2005里好像有问题啊?
如果定义 char * filename

auxDIBImageLoad(filename);就提示参数不正确。

貌似在VC6里边没问题,但是在VS2005里边就行。不知道该怎么改?
lizhaodongli 2010-12-16
  • 打赏
  • 举报
回复
你用VS2005 参考NEHE的教程,完成了OpenGL纹理映射了么?能把代码发我一份么。我这一直不能成功。读位图有问题。谢谢。
xqhrs232 2009-11-30
  • 打赏
  • 举报
回复


InitOpenGL( );

if (!LoadGLTextures()) // Jump To Texture Loading Routine ( NEW )
{
return FALSE; // If Texture Didn't Load Return FALSE
}



原来上面的代码的顺序有问题.LoadGLTextures()放后面就可以了.
xqhrs232 2009-11-29
  • 打赏
  • 举报
回复
觉得图片路径有点问题

if (TextureImage[0]=LoadBMP((char*)"Data/NeHe.bmp")) //在VC60是是可以的.
张赐 2009-11-25
  • 打赏
  • 举报
回复
纹理是不是放在正确的文件夹里了
xqhrs232 2009-11-25
  • 打赏
  • 举报
回复
代码是基于MFC DIALOG的,只要是窗体应该就没关系.再说立方体已经显示出来了那些OPENGL的初始化已经成功了.
xqhrs232 2009-11-25
  • 打赏
  • 举报
回复



void CMy2009_11_20_MFCDlg_OpenGL_TestDlg::DrawOpenGL_Texture(void)
{



glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
// Reset The View

glTranslatef(0.0f,0.0f,-5.0f);


glLoadIdentity();

glScalef(0.6,0.6,0.6); //进行比例缩放!!!----必须这样弄,要不然立方体都看不到

glRotatef(xrot,1.0f,0.0f,0.0f);

glRotatef(yrot,0.0f,1.0f,0.0f);
glRotatef(zrot,0.0f,0.0f,1.0f);

glBindTexture(GL_TEXTURE_2D, texture[0]);

glBegin(GL_QUADS);




//==================================================================
// Front Face
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);

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);

//==================================================================
// Back Face
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);


glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, -1.0f);

//==================================================================
// Top Face
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f);


glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);

glTexCoord2f(1.0f, 0.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);


glTexCoord2f(1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, -1.0f);



//==================================================================
// Bottom Face
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);


glTexCoord2f(0.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, -1.0f);

glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f);


glTexCoord2f(1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);


//==================================================================
// Right face
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);


glTexCoord2f(0.0f, 0.0f);
glVertex3f( 1.0f, -1.0f, 1.0f);

//==================================================================
// Left Face
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);

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();



/*

xrot+=0.3f;
yrot+=0.2f;
zrot+=0.4f;

*/


//====================================================================

glFlush();

SwapBuffers( m_hDC );


}

xqhrs232 2009-11-25
  • 打赏
  • 举报
回复
立方体是画出来了也在旋转,但只是白色的立方体啊!
DEBUG看了纹理是加载成功的!!!
xqhrs232 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zhangci226 的回复:]
你代码的其他地方可能有问题
[/Quote]

就这点代码了,其它代码都只是DLG的代码了来自MFC了.
张赐 2009-11-25
  • 打赏
  • 举报
回复
你代码的其他地方可能有问题
xqhrs232 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zhangci226 的回复:]
引用 12 楼 xqhrs232 的回复:
引用 9 楼 zhangci226 的回复:
引用 8 楼 xqhrs232 的回复:
glLoadIdentity();//在前面
glTranslatef(0.0f,0.0f,-5.0f);  //在后面
//上面这样放,窗体里面什么都看不到必须按下面的顺序,怪怪!!!

glTranslatef(0.0f,0.0f,-5.0f); //在前面
glLoadIdentity();//在后面

按这样的顺序写代码,窗体才能看到立方体,这一点也想不明白。


你的顺序不对

一般来说,先进行缩放,然后旋转,最后移动

C/C++ code

glLoadIdentity();
glTranslatef(0.0f,0.0f,-5.0f);
glRotatef(xrot,1.0f,0.0f,0.0f);
glRotatef(yrot,0.0f,1.0f,0.0f);
glRotatef(zrot,0.0f,0.0f,1.0f);
glScalef(0.6,0.6,0.6);


按你的这个顺序啥都看不到,全黑的.
代码在VC60(WIN32)下可以的,但我弄到VS2005就不行.


不知道你的相机位置和投影是怎么设置的。

一般来说,在draw的函数中,一般先进入ModelView,然后进行变换操作。


C/C++ code
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glPushMatrix();
glTranslatef(0.0f,0.0f,-5.0f);
glRotatef(xrot,1.0f,0.0f,0.0f);
glRotatef(yrot,0.0f,1.0f,0.0f);
glRotatef(zrot,0.0f,0.0f,1.0f);
glScalef(0.6,0.6,0.6);

DrawCube()//这里显示你的立方体glPopMatrix();

还有,贴图的坐标的顺序要逆时针的方向给
[/Quote]
试了你的方法还是没见纹理的.
张赐 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xqhrs232 的回复:]
引用 9 楼 zhangci226 的回复:
引用 8 楼 xqhrs232 的回复:
glLoadIdentity();//在前面
glTranslatef(0.0f,0.0f,-5.0f);  //在后面
//上面这样放,窗体里面什么都看不到必须按下面的顺序,怪怪!!!

glTranslatef(0.0f,0.0f,-5.0f); //在前面
glLoadIdentity();//在后面

按这样的顺序写代码,窗体才能看到立方体,这一点也想不明白。


你的顺序不对

一般来说,先进行缩放,然后旋转,最后移动

C/C++ code

glLoadIdentity();
glTranslatef(0.0f,0.0f,-5.0f);
glRotatef(xrot,1.0f,0.0f,0.0f);
glRotatef(yrot,0.0f,1.0f,0.0f);
glRotatef(zrot,0.0f,0.0f,1.0f);
glScalef(0.6,0.6,0.6);


按你的这个顺序啥都看不到,全黑的.
代码在VC60(WIN32)下可以的,但我弄到VS2005就不行.
[/Quote]

不知道你的相机位置和投影是怎么设置的。

一般来说,在draw的函数中,一般先进入ModelView,然后进行变换操作。



glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glPushMatrix();
glTranslatef(0.0f,0.0f,-5.0f);
glRotatef(xrot,1.0f,0.0f,0.0f);
glRotatef(yrot,0.0f,1.0f,0.0f);
glRotatef(zrot,0.0f,0.0f,1.0f);
glScalef(0.6,0.6,0.6);

DrawCube()//这里显示你的立方体
glPopMatrix();



还有,贴图的坐标的顺序要逆时针的方向给
chogimoga 2009-11-25
  • 打赏
  • 举报
回复
glLoadIdentity(); 换成用一对堆栈矩阵包起来

glPushMatrix();
...
glPopMatrix();
xqhrs232 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhangci226 的回复:]
引用 8 楼 xqhrs232 的回复:
glLoadIdentity();//在前面
glTranslatef(0.0f,0.0f,-5.0f);  //在后面
//上面这样放,窗体里面什么都看不到必须按下面的顺序,怪怪!!!

glTranslatef(0.0f,0.0f,-5.0f); //在前面
glLoadIdentity();//在后面

按这样的顺序写代码,窗体才能看到立方体,这一点也想不明白。


你的顺序不对

一般来说,先进行缩放,然后旋转,最后移动

C/C++ code

glLoadIdentity();
glTranslatef(0.0f,0.0f,-5.0f);
glRotatef(xrot,1.0f,0.0f,0.0f);
glRotatef(yrot,0.0f,1.0f,0.0f);
glRotatef(zrot,0.0f,0.0f,1.0f);
glScalef(0.6,0.6,0.6);
[/Quote]

按你的这个顺序啥都看不到,全黑的.
代码在VC60(WIN32)下可以的,但我弄到VS2005就不行.
xqhrs232 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 chogimoga 的回复:]
你使用Fog效果了没?

看你的代码也没有问题


[/Quote]

没用!!!
chogimoga 2009-11-25
  • 打赏
  • 举报
回复
你使用Fog效果了没?

看你的代码也没有问题

张赐 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xqhrs232 的回复:]
glLoadIdentity();//在前面
glTranslatef(0.0f,0.0f,-5.0f);  //在后面
//上面这样放,窗体里面什么都看不到必须按下面的顺序,怪怪!!!

glTranslatef(0.0f,0.0f,-5.0f); //在前面
glLoadIdentity();//在后面

按这样的顺序写代码,窗体才能看到立方体,这一点也想不明白。
[/Quote]

你的顺序不对

一般来说,先进行缩放,然后旋转,最后移动



glLoadIdentity();
glTranslatef(0.0f,0.0f,-5.0f);
glRotatef(xrot,1.0f,0.0f,0.0f);
glRotatef(yrot,0.0f,1.0f,0.0f);
glRotatef(zrot,0.0f,0.0f,1.0f);
glScalef(0.6,0.6,0.6);
xqhrs232 2009-11-25
  • 打赏
  • 举报
回复
glLoadIdentity();//在前面
glTranslatef(0.0f,0.0f,-5.0f); //在后面
//上面这样放,窗体里面什么都看不到必须按下面的顺序,怪怪!!!

glTranslatef(0.0f,0.0f,-5.0f); //在前面
glLoadIdentity();//在后面

按这样的顺序写代码,窗体才能看到立方体,这一点也想不明白。
加载更多回复(3)

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧