opengl纹理贴图后画面很暗

qwesdfok 2014-08-25 05:57:53
刚试了一下纹理贴图,发现全屏都是黑色,加了color4f(1,1,1,1)后显示图片了,但是颜色怎么那么奇怪- -!
上一下结果和原图,有没有人知道是什么原因?


bmp文件不能传- -~
这是BITMAP的数据

代码如下


#include <glut.h>
#include <Windows.h>

void display(void);
void idle(void);
void reshap(int w, int h);
void keyf(unsigned int key, int x, int y);



BITMAP GetBmp(LPCTSTR title)
{
static HBITMAP hbmp = 0;
hbmp = (HBITMAP)::LoadImage(GetModuleHandle(0), title, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
static BITMAP bmp = { 0 };
GetObject(hbmp, sizeof(BITMAP), &bmp);
return bmp;
}


void display(void)
{
static int t = 0;//防止多次申请纹理内存
glColor3f(0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
static BITMAP bmp = GetBmp(L"G:/lushi/DLY_0.bmp");
static GLuint texid;
if (t == 0)
{
glGenTextures(1, &texid);
glBindTexture(GL_TEXTURE_2D, texid);
glTexImage2D(GL_TEXTURE_2D, 0, 3, bmp.bmWidth, bmp.bmHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, bmp.bmBits);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);//这个注释了或者改成GL_REPLACE也没用
}
glEnable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
glBindTexture(GL_TEXTURE_2D, texid);
glColor4f(1, 1, 1, 1);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex3f(0, 0, 0);
glTexCoord2f(1, 0); glVertex3f(1, 0, 0);
glTexCoord2f(1, 1); glVertex3f(1, 1, 0);
glTexCoord2f(0, 1); glVertex3f(0, 1, 0);
glEnd();
glDisable(GL_TEXTURE_2D);
glFlush();
t++;
};

void idle(void)
{
display();
glutSwapBuffers();
};

void reshap(int w, int h)
{
static double ratio = 1.0*w / h;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, ratio, 0.1, 1000);
glMatrixMode(GL_MODELVIEW);
glViewport(0, 0, w, h);
gluLookAt(0, 0, 3, 0, 0, -1, 0, 1, 0);
};

void keyf(unsigned char key, int x, int y)
{
if (key == 27)
exit(0);
};


int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitWindowPosition(100, 100);
glutInitWindowSize(800, 600);
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
glutCreateWindow("qwer");
glutDisplayFunc(display);
glutIdleFunc(idle);
glutKeyboardFunc(keyf);
glutReshapeFunc(reshap);
glutMainLoop();
return 0;
}

...全文
738 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwesdfok 2014-08-26
  • 打赏
  • 举报
回复
引用 3 楼 movsd 的回复:
glTexImage2D: GL_RGB改为GL_BGR_EXT
ok,解决了 3Q
movsd 2014-08-26
  • 打赏
  • 举报
回复
glTexImage2D: GL_RGB改为GL_BGR_EXT
qwesdfok 2014-08-26
  • 打赏
  • 举报
回复
人工置顶,求解!
qwesdfok 2014-08-25
  • 打赏
  • 举报
回复
额,传错原图了
这张

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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