【OpenGL】请教如何实现OpenGL背景贴图??

时间:2022-09-10 17:08:22
OpenGL背景都是默认黑色的,如何实现OpenGL背景贴图哪??

要求:BMP图片实现。。
1.背景图能实现,随窗口大小变化。
2.背景图永远保持静态状态,不随3D的变化而变化。
 

9 个解决方案

#1


请大牛们速来看看 了。。。。

#2


有同一个问题。。。

#3


请知道的牛人。。帮忙解答下!!!

#4


你直接用glDrawpixels()函数进行绘图不得行了吗?

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluOrtho2D(0,0,width,height);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glRasterPos2i(0,0);
glPushAttrib(GL_PIXEL_MODE_BIT);
glPixelZoom((GLfloat)width/(GLfloat)image_width,(GLfloat)height/(GLfloat)image_height);
glDrawPixels(image_width,image_height,GL_RGBA,GL_UNSIGNED_BYTE,image_data);
glPopAttrib(GL_PIXEL_MODE_BIT);

glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();

//do something as you wanna do

#5


引用 4 楼  的回复:
你直接用glDrawpixels()函数进行绘图不得行了吗?


glDrawPixels(image_width,image_height,GL_RGBA,GL_UNSIGNED_BYTE,image_data);

这一句怎么都不过,读取的数据是正常的!!
不好意思。。这个没有成功!!能否传一个完整的代码。。

383156647@qq.com

#6


如何实现不失真的图像,图像随着窗口大小而变化,保存不失真的状态。。

#7


引用 6 楼  的回复:
如何实现不失真的图像,图像随着窗口大小而变化,保存不失真的状态。。


牛人来解决下。。。

#8


1、什么叫不失真?  既然图像要随窗口大小变化,就需要拉伸,失真是必然的,除非使用循环贴图。
2、实现步骤大致如下。

(1)、使用bmp创建纹理,mipmap可以解决缩小时的失真问题
(2)、设置正交投影矩阵(透视投影也行,不过要恰好填满窗口比较麻烦)
(3)、绑定相应纹理,绘制一个填满窗口的矩形(纹理可以是拉伸或者循环,需要时根据需求设置参数)
(4)、清空深度缓存
(5)、正常流程,渲染其他对象

#9


步骤很详细。。慢慢实现看看。。

#1


请大牛们速来看看 了。。。。

#2


有同一个问题。。。

#3


请知道的牛人。。帮忙解答下!!!

#4


你直接用glDrawpixels()函数进行绘图不得行了吗?

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
gluOrtho2D(0,0,width,height);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glRasterPos2i(0,0);
glPushAttrib(GL_PIXEL_MODE_BIT);
glPixelZoom((GLfloat)width/(GLfloat)image_width,(GLfloat)height/(GLfloat)image_height);
glDrawPixels(image_width,image_height,GL_RGBA,GL_UNSIGNED_BYTE,image_data);
glPopAttrib(GL_PIXEL_MODE_BIT);

glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();

//do something as you wanna do

#5


引用 4 楼  的回复:
你直接用glDrawpixels()函数进行绘图不得行了吗?


glDrawPixels(image_width,image_height,GL_RGBA,GL_UNSIGNED_BYTE,image_data);

这一句怎么都不过,读取的数据是正常的!!
不好意思。。这个没有成功!!能否传一个完整的代码。。

383156647@qq.com

#6


如何实现不失真的图像,图像随着窗口大小而变化,保存不失真的状态。。

#7


引用 6 楼  的回复:
如何实现不失真的图像,图像随着窗口大小而变化,保存不失真的状态。。


牛人来解决下。。。

#8


1、什么叫不失真?  既然图像要随窗口大小变化,就需要拉伸,失真是必然的,除非使用循环贴图。
2、实现步骤大致如下。

(1)、使用bmp创建纹理,mipmap可以解决缩小时的失真问题
(2)、设置正交投影矩阵(透视投影也行,不过要恰好填满窗口比较麻烦)
(3)、绑定相应纹理,绘制一个填满窗口的矩形(纹理可以是拉伸或者循环,需要时根据需求设置参数)
(4)、清空深度缓存
(5)、正常流程,渲染其他对象

#9


步骤很详细。。慢慢实现看看。。