电脑似乎不支持opengl的纹理贴图

willhavhad 2014-11-10 04:51:23
刚学习opengl纹理贴图,照着红宝书上的代码一行一行敲进去,发现贴图没成功。。。
书上的例子是贴了个棋盘格到两个矩形上边,可我的代码运行出来矩形是全白的。。。把纹理图像换成灰色了,可贴出来结果还是全白的,是不是电脑显卡不支持opengl纹理贴图啊,这可怎么办,opengl作业都做不了了。。。求前辈支支招
...全文
165 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-11-11
  • 打赏
  • 举报
回复
搜网络教程“学OpenGL编3D游戏”。 使用驱动精灵软件升级显卡驱动?
willhavhad 2014-11-11
  • 打赏
  • 举报
回复
人呢人呢。。。
willhavhad 2014-11-10
  • 打赏
  • 举报
回复
求助啊各位前辈
willhavhad 2014-11-10
  • 打赏
  • 举报
回复
嗯先附上代码

#include<gl\gl.h>
#include<gl\glu.h>
#include<gl\glut.h>
#include<iostream>
using namespace std;

#define checkImageWidth 64
#define checkImageHeight 64
GLubyte checkImage[checkImageHeight][checkImageWidth][4];
GLuint texName;

void makeCheckImage(){
	int i, j, c;
	//for (i = 0; i < checkImageHeight; i++){
	//	for (j = 0; j < checkImageWidth; j++){
	//		c = (((i & 0x8) == 0) ^ ((j & 0x8) == 0)) * 255;
	//		checkImage[i][j][0] = (GLubyte)c;
	//		checkImage[i][j][1] = (GLubyte)c;
	//		checkImage[i][j][2] = (GLubyte)c;
	//		checkImage[i][j][3] = (GLubyte)255;
	//	}
	//}
	for (i = 0; i < checkImageHeight; i++){
		for (j = 0; j < checkImageWidth; j++){
			checkImage[i][j][0] = 133;
			checkImage[i][j][1] = 133;
			checkImage[i][j][2] = 133;
			checkImage[i][j][3] = 255;
		}
	}

}

void init(){
	glClearColor(0.0, 0.0, 0.0, 0.0);
	glShadeModel(GL_FLAT);
	glEnable(GL_DEPTH_TEST);
	makeCheckImage();
	glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

	glGenTextures(1, &texName);
	glBindTexture(GL_TEXTURE_2D, texName);

	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, checkImageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, checkImage);

}

void display(){
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glEnable(GL_TEXTURE_2D);
	glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
	glBindTexture(GL_TEXTURE_2D, texName);
	glBegin(GL_QUADS);
	glTexCoord2d(0.0, 0.0); glVertex3f(-2.0, -1.0, 0.0);
	glTexCoord2d(0.0, 1.0); glVertex3f(-2.0, 1.0, 0.0);
	glTexCoord2d(1.0, 1.0); glVertex3f(0.0, 1.0, 0.0);
	glTexCoord2d(1.0, 0.0); glVertex3f(0.0, -1.0, 0.0);

	glTexCoord2d(0.0, 0.0); glVertex3f(1.0, -1.0, 0.0);
	glTexCoord2d(0.0, 1.0); glVertex3f(1.0, 1.0, 0.0);
	glTexCoord2d(1.0, 1.0); glVertex3f(2.41421, 1.0, -1.41421);
	glTexCoord2d(1.0, 0.0); glVertex3f(2.41421, -1.0, -1.41421);

	glEnd();
	glFlush();
	glDisable(GL_TEXTURE_2D);

}

void reshape(int w, int h){
	glViewport(0, 0, (GLsizei)w, (GLsizei)h);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 1.0, 30.0);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glTranslatef(0.0, 0.0, -3.6);
}

int main(){
	init();
	glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH);
	glutInitWindowSize(500, 500);
	glutInitWindowPosition(500, 200);
	glutCreateWindow("texture2d");
	glutDisplayFunc(display);
	glutReshapeFunc(reshape);
	//glutKeyboardFunc(keyboard);

	glutMainLoop();
}

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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