OpenGL 加载位图(BMP)贴图

GLuint Texture[1];
HBITMAP hBMP;
BITMAP BMP;

glGenTextures(1, &Texture[0]);
hBMP = (HBITMAP)LoadImage(NULL, L"xxx.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
if (!hBMP) return FALSE;
GetObject(hBMP, sizeof(BMP), &BMP);
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
glBindTexture(GL_TEXTURE_2D, Texture[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, 3, BMP.bmWidth, BMP.bmHeight, 0, GL_BGR_EXT, GL_UNSIGNED_BYTE, BMP.bmBits);

DeleteObject(hBMP);

 

时间: 2024-08-05 14:07:01

OpenGL 加载位图(BMP)贴图的相关文章

vs2010 单文档MFC 通过加载位图文件作为客户区背景

实现效果: 这个其实是一个非常常见的功能,大家都会考虑给自己简单的工程做一个背景界面.其实只要在view类中重载OnEraseBkgnd()这个函数就好了. 代码如下: BOOL CdddView::OnEraseBkgnd(CDC* pDC) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CString string("b.bmp"); HBITMAP hbitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),strin

win32用GDI+加载png图片作为背景图

#include <windows.h> #include <gdiplus.h> /* GDI+ startup token */ ULONG_PTR gdiplusStartupToken; /* Declare Windows procedure */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); // UpdateLayeredWindow Defination typedef BOOL(*UP

使用bitblt函数加载位图,重绘时消失

BOOL BitBlt( HDC hdcDest, // 设备描述表句柄 int nXDest, // 输出设备左上角x坐标 int nYDest, // 输出设备左上角y坐标 int nWidth, // 资源在输出设备上的宽度 int nHeight, // 资源在输出设备上的高度 HDC hdcSrc, // 资源设备描述表(虚拟设备描述表) int nXSrc, // 指定资源左上角的x坐标 int nYSrc, // 指定资源左上角的y坐标 DWORD dwRop // 光栅操作代码

openGL加载obj文件+绘制大脑表层+高亮染色

绘制大脑表层并高亮染色的工作是以openGL加载obj文件为基础的,这里是我们用到的原始程序:只能加载一个obj文件的demo. 然而,一个完整的大脑表层是由很多分区组成的,因此我们的程序需要支持两个功能: 同时加载多个obj文件. 每个大脑分区obj文件保持其相对位置. 明白了需求后,我们就可以开始修改代码了~ glmUnitize函数的作用是单位化,也就是把模型通过平移和缩放变换限制到3维坐标系中点为中心的一个单位正方体区域内.所以控制obj显示位置是在glmUnitize()函数中,源代码

Android中加载位图的方法

Android中加载位图的关键的代码: AssetManager assets =context.getAssets(); //用一个AssetManager 对象来从应用程序包的已编译资源中为工程加载资产 InputStream istream=assets.open("/*位图的名字*/"); BitmapFactory.Options options=new BitmapFactory.Options(); options.inPreferredConfig =Bitmap.Co

Android 高效加载大图,多图解决方案,有效避免程序OOM

高效加载大图片 我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状.不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小.比如说系统图片库里展示的图片大都是用手机摄像头拍出来的,这些图片的分辨率会比我们手机屏幕的分辨率高得多.大家应该知道,我们编写的应用程序都是有一定内存限制的,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常.我们可以通过下面的代码看出每个应用程序最高可用内存是多少. [java] view plaincopy in

OpenGL 加载DDS文件(压缩纹理)

想必很多人都见过DDS这种文件,它是一个"图片文件",如果你安装了某些看图软件,你可以直接双击打开它来进行预览. 那么,这种DDS文件和我们常见的TGA/PNG之类的文件有何不同呢? DDS和TGA/PNG/JPG之类的"图片文件" 一样,支持"压缩",减少磁盘空间占用(把文件变小). 通常我们要加载一个TGA或者PNG文件到OpenGL的时候,都要先把文件数据还原成RGB格式的像素数据,然后用glTexImage2D把像素数据传到显存.这个过程

WINDOWS程序设计对话框加载显示bmp图像及刷新

参考文章:http://blog.csdn.net/wangjian8006/article/details/7464431 图片的加载与显示也是属于窗口绘制这一部分的.所以其代码要写在消息函数的WM_PAINT消息下. (这个代码图片路径是写死的,图片不会变,下面会讲该怎么刷新图片) // 处理对话框消息 INT_PTR CALLBACK DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTR

Android高效加载大图、多图解决方案,有效避免程序OOM

我们可以通过下面的代码看出每个应用程序最高可用内存是多少 int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);   Log.d("TAG", "Max memory is " + maxMemory + "KB"); BitmapFactory这个类提供了多个解析方法(decodeByteArray, decodeFile, decodeResource等)用于创建Bit