搭建Windows渲染环境

本文聚焦于Windows API中的GDI图形库,介绍如何利用GDI创建和管理DIB位图,通过提交RGB数据实现屏幕渲染,并阐述了消息循环在过程中的作用,最终展示渲染效果。
摘要由CSDN通过智能技术生成

之前已经讨论过操作系统无关的图形库部分,这一篇将重点放在windows渲染环境上.

事实上windows api自带一个图形库gdi,gdi对于dib的支持比较好,可以创建一个dib对象,每一帧向dib位图指针提交rgb数据,然后把生成的位图提交到屏幕,于是就能在屏幕中看到渲染的图形了.


创建和释放位图


void initDIB(HDC dibDC,int width,int height) {
	BITMAPINFO bmi;
	memset(&bmi,0,sizeof(bmi));
	bmi.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
	bmi.bmiHeader.biWidth=width;
	bmi.bmiHeader.biHeight=-height;
	bmi.bmiHeader.biPlanes=1;
	bmi.bmiHeader.biBitCount=32;
	bmi.bmiHeader.biCompression=BI_RGB;
	screenDIB=CreateDIBSection(NULL,&bmi,DIB_RGB_COLORS,(void**)&screenBits,NULL,0);
	dibBefore=(HBITMAP)SelectObject(dibDC,screenDIB);
}
void releaseDIB(HDC dibDC) {
	if(screenDIB!=NULL) {
		SelectObject(dibDC,dibBefore);
		DeleteObject(screenDIB);
		screenDIB=NULL;
	}
}
首先创建一个32位位图,如果取24位位图那么长宽为任意值时将会出问题;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值