DirectX学习--1
DirectX是Microsoft(微软)推出的一套函数库,这套函数库可以用于游戏,多媒体等软件开发,它内部包含了很多子模块,其中用于图形绘制的
模块称之为DirectX Graphics ,DirectX Graphics 又分为了二维回执和Draw和三维绘制的3D,我们使用的Direct3d draw来搭建图形学习的环境
因为DirectX提供了可以几乎操作显存的能力,所以比操作系统 提供的GDI(GraphicsDeviceInterface)快的很多.
注意在学习DirectX的时候需要安装他的SDK 还需要在IDE编译器中包含lib 和 include 文件等
PS:下面的代码我写的Dx = directX
此处包含了dx draw的头文件
#include <ddraw.h>
#pragma comment(lib, "ddraw.lib")
#pragma comment(lib, "dxguid.lib")
#pragma comment表示链接上面的两个库
LPDIRECTDRAW7 g_ddraw; //表示创建了dxdraw对象
//函数使用:
DirectDrawCreateEx()//此函数表示创建dxdraw对象
DirectDrawCreateEx( 0 , (void**)&g_ddraw,IID_IDirectDraw7,0);
第一个参数是lpGUID:指向DirectDraw接口的全局唯一标志符(GUID:Global unique identify)的指针。在这里,我们给它NULL,
表示我们将使用当前的DirectDraw接口。//沉默接口
第二个参数是lplpDD:这个参数是用来接受初始化成功的dxDraw对象的地址
第三个参数是pUnkOuter:代表了DxDraw对象的一个ID号 注意: 确保加入了dxguid.lib这个库: #pragma comment (lib, "dxguid.lib")
第四个参数pUnkOuter 在 DirectX7手册中解释道: 允许未来与组件聚合功能的兼容性。然而,目前,这种方法返回一个错误,如果这个参数是空的。当然我们还是写0为沉默参数
此函数返回值在手册中解释如下
If the function succeeds, the return value is DD_OK.//如果是正确的则返回DD_OK
If it fails, the function can return one of the following error values: //返回错误就为0
//设置dxDraw与操作系统的协调层级,因为dxDraw可以
//绕开操作系统直接和硬件的驱动程序交互,而此时操
//作系统也要访问硬件的驱动,那么就必须双方进行协
//商共用的方案,这种协商和我们应用程序如果使用dxDraw
//有关系的,如果就是一般的窗口程序中使用dxDraw那
//么设置为DDSCL_NORMAL即可,表示一般的层级,如果
//我们要独占显卡那么就必须设置为DDSCL_FULLSCREEN
//、DDSCL_EXCLUSIVE、DDSCL_ALLOWREBOOT,这样的组
//合就是一般进行全屏游戏开发使用的标记
此时我们就可以用g_ddraw指出成员了,他是一个指针
g_ddraw->SetCooperativeLevel(g_hWnd, DDSCL_NORMAL);
此时我们可以创建一个ddsd 来得到当前显卡工作模式
DDSURFACEDESC2 ddsd;
ddsd.dwSize = sizeof(DDSURFACEDESC2);
PS:此图片表示DDSURFACEDESC2 结构体的参数。
ddsd.dwSize = sizeof(DDSURFACEDESC2);
g_ddraw->GetDisplayMode(
&ddsd);
//设置当前显卡的工作模式
g_ddraw->SetDisplayMode(
//水平分辨率
ddsd.dwWidth,
//垂直分辨率
ddsd.dwHeight,
//位深
ddsd.ddpfPixelFormat.dwRGBBitCount,
//刷新率
0,
//默认的参数
DDSDM_STANDARDVGAMODE);
最后记得release()此指针
写法g_ddraw->Release();
DirectX学习--1相关推荐
- WPF结构、图形支持与DirectX学习
Windows 呈现基础(Windows Presentation Foundation,WPF)是一个用于Windows平台的全新的图形显示系统.WPF是针对.NET而设计的,它受现代显示技术,如H ...
- Direct-X学习笔记--Alpha颜色混合
Alpha混合技术是灰常有用的东东.待我好好学习一下. 一.简介 首先看一下Alpha通道,Alpha通道是计算机中存储图片透明度信息的通道,它是一个8位灰度的通道,用256级灰度记录图像中的透明信息 ...
- DirectX学习笔记--3D基本数学知识整理
最近在看<Direct9.0 3D游戏编程基础>以及浅墨大神的<windows游戏编程从零开始>两本书,希望能通过博客来记录一下自己的学习历程,整理相关的知识,方便查阅. 一. ...
- DirectX学习资料汇总
前提 由于DirectX已经发展了好多年,现在已经发展到了DirectX 12.0,而且DirectX现在还在发展中.这里汇总一下我学DirectX时碰到的一些学习资料,供后来人按需获取. 网站篇 ...
- DirectX学习笔记(九):模板缓存与镜面效果实现
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8632184 作者:毛星云( ...
- DirectX学习笔记_关于Sprite.Draw2D的说明
在DirectX的Sprite中提供一个Draw2D的方法,该方法绘制一个Sprite对象用于二维空间中显示,在DirectX 9.0C中,该方法有6个重载,分别是 1 public void Dra ...
- directX学习系列8 颜色融合(转)
1, Multipass(多通道) 将一个任务划分成几个阶段,由多个pass处理不同阶段,后续pass总是处理前一个pass的结果.例如复杂的光照方程可以分成几个pass来计算. 用不同的 ...
- DirectX学习笔记(十五):粒子系统实现
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhmxy555/article/details/8744805 作者:毛星云(浅 ...
- Direct-X学习笔记--天空盒
学习了三维的地形系统之后,该抬头看看天空啦.下面学习一下传说中的三维天空系统.其实三维天空的实现比地形系统简单得多,我们只需要用一点点小伎俩,就可以蒙混大多数人. 一.简介 我们在玩游戏的时候,尤其是 ...
最新文章
- 彩图完美解释:麦克斯韦方程组
- Prototype1.5.1源代码解读分析-1
- NDArray自动求导
- 映射递归循环-约瑟夫环问题递归解法的一点理解
- 基础10 多进程、协程(multiprocessing、greenlet、gevent、gevent.monkey、select、selector)...
- s1 java 复习 视频小课
- 【Java线程】“打工人”初识线程池及自定义线程池实战
- win11打开安全中心显示英文怎么办 windows11打开安全中心显示英文的解决方法
- 基于Socket的.NET应用组件
- 什么是Http无状态协议?
- Pyqt之模态与无模态对话框(Modal and Modeless)
- 韦东山嵌入式Linux第一期视频-韦东山-专题视频课程
- 【MapGIS二次开发】常见问题解析
- 解读测试能力素质模型(Job Model)
- api—淘宝图片上传
- 负折射率波导matlab,介质波导的数值模拟
- CTF高手教你如何实现文件加解密破解
- C语言常见字符串函数、字符分类函数与内存函数的使用
- 平实给力的写作指导入门手册——leo鉴书57
- SaaS是什么,目前主流的国内SAAS平台提供商有哪些?