
大三windowsAPI+DX API实现游戏引擎
书里一些很好的编程思想 和编程方法
qq_40272523
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Sleep()
这个函数用在就是执行在Sleep()一段时间 就是在Sleep()函数消耗时间但一直在Sleep()函数呆着 相当于 一直卡在50M了但在游戏中我觉得我在我那个游戏中用的暂停方法比较好 我那个是跳过执行游戏的部分在暂停期间就是设两个不同的游戏状态运行中和 暂停中...原创 2019-09-21 21:50:52 · 2778 阅读 · 0 评论 -
PostMessage()和GetAsyncKeyState()
这个函数还是很有意思的这两个函数配合在一块1.是可以解决同时按上下键 而不是在WndProc()里上下键一块按只能响应一个方向2.在一个是可以在 非消息过程函数里的任何其他函数里判断按下哪个键然后可以不通过WndProc()处理外部输入可以在别的函数实时判断输入 然后做相应操作////////////////////////////接下来好好说一下GetAsyncKe...原创 2019-09-21 21:57:07 · 207 阅读 · 0 评论 -
#ifndef #define .......#else #endif
ifndef是"if not defined"的简写,是宏定义的一种,它是可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等。实际上确切的说这应该是预处理功能中三种(宏定义,文件包含和条件编译)中的第三种——条件编译。我们先说预处理一.预处理第一种功能宏定义:#define RGB(r,g,b) (b&31+g&31<<5+r&31&l...原创 2019-09-21 22:35:44 · 415 阅读 · 0 评论 -
结构体定义的几种形式 和typedef
一.直接就简单的在内存中将多个数据类型复合到一块 连续排放 只不过将这个复合的空间又起一个名字struct{ int a; char c;}ttt;就这种 ttt就是那个大的复合空间的名字二将复合大空间当作一个类似类声明的 但没有定义 即 内存中并没有其实实例变量struct GY{ int a; char c;};GY有点像类名字 那样用就可以了...原创 2019-09-22 11:49:12 · 364 阅读 · 0 评论 -
union
1union的地位和struct一样 和clss一样不过class 实例对象时不用加class关键字struct 和union都要加加两个关键字2.一个union的大小是 反正就每个成员变量共用一块内存 那肯定要能容纳最大的那个成员但 要考虑内存补齐3. 同一时刻只能以 一个成员变量的身份示人4.定义的多种形式也都和tupedef的复合也都与struct一样5.为...原创 2019-09-22 11:58:45 · 122 阅读 · 0 评论 -
函数栈调用过程以及 全局变量的好处
1.如果我没参错的 话 在一个程序 运行时参数栈的大小就确定了 然后以后函数就一直用那个栈了我的意思是 如果有两次调用一个函数 他们的变量所在的位置是一样的 那么果然 上图2.残局值 我猜 如果上一次将某个函数栈区值 赋成一个固定值 下次 “偶然”获得那个内存块的还是:上一世的值额 有点怪PS在这之前插播一下 哈 argv每一个指针都指向了一个cha...原创 2019-09-22 21:03:08 · 238 阅读 · 0 评论 -
关于new delete malloc() 和free()
new 和delete 是一对malloc和free是一对 这个我容易搞混其实new 有新建的意思,而delete是删除的意思而malloc是分配的意思,而free是释放 使自由的意思C++吗 面向对象 自然意思上贴近对象 贴近一个实体C就比较底层 就简单的将内存看作空间 很朴实...原创 2019-09-24 17:33:23 · 100 阅读 · 0 评论 -
Event和Message的关系
也就是实际上调用WndProc()都是由OS完成的 窗口程序的大部分都是OS完成的因为我们毕竟在它基础上就是OS有自己的消息队列 和消息循环的但是当我们 用户(事件发起者)做出了某事件后,比如按下鼠标这一Event,OS会将事件用消息去标识是什么事件然后作为参数 调用 On消息()。我的理解是这样的 事件是一个客观的源头,消息是事件的一种人为标识,是一个数据结构作为参数供W...原创 2019-10-05 20:43:00 · 1124 阅读 · 0 评论 -
为什么要锁定Memory
因为OS为了 让跟多的进程能够宏观同时运行 需要在Virtual Memory和 Memory之间做动态透明的数据转移比如把长时间不用的页给移动到外面 虚拟内存 用到时 在用页面置换算法啥的 这样子那么原来的内存可能会移动位置甚至 我们用到他时 他可能在Virtual Memory中 还要在往内存调 那这个肯定是很费时间的而游戏实时性要求很高 肯定是不行的 所以 当我们要往 视频帧缓存...原创 2019-09-21 16:00:47 · 314 阅读 · 0 评论 -
DirectDrawCreate(NULL, &lpdd, NULL); lpdd指向的DirectDraw对象的位置
就是通过DirectDrawCreate()函数给lpdd赋值的那个COM接口对象空间确实实在堆区原创 2019-09-21 10:35:07 · 572 阅读 · 0 评论 -
DX如此高效的原因
主要是windows的开发商 微软 影响力 比较大他自己基于windows开发的DirectX 会联合其他硬件厂商 DX会向他们展示自己的规则 以及函数调用形式 数据结构等硬件厂商据此写自己的硬件的驱动程序 作为DX HardWare抽象Layer的一部分这样 程序可以通过DX DX通过HAL(驱动程序集合类似的) 直接与硬件对话。但是如果 硬件做不到 会转换成Hare 辅助Lay...原创 2019-09-20 21:37:00 · 179 阅读 · 0 评论 -
关于类型转换的一些实例和问题
142我们知道HAND类型其实是一个整形 int通过对将一个const int 转换为(HCURSOR)我将其类型转换后法线可以编译通过 那有一个想法 是否 只要在不超过那个可控制的memory area 都可以随意进行类型转换然后在G:\computer Graphics\Graphics Programming\private public protected 以及静态成员...原创 2019-09-19 18:31:53 · 253 阅读 · 0 评论 -
关于函数栈的问题
1一个函数会被分配一个函数栈2.函数栈的大小 我不知道是不是都一样不过一般就是在数M徘徊3.函数栈是用来存该函数的 内部实例的局部对象/变量的4.函数的代码在代码区 函数的名字的值就是该函数的入口地址像WindowsAPI中 wndClass.lpfnWndProc就是通过指向 我们程序中的WndProc()指向那个程序入口地址5.所以 你如果栈申请一个很大的数组 应该...原创 2019-09-20 18:46:31 · 457 阅读 · 0 评论 -
通过PeekMessage()搞崩程序
好吧 我把最后一个参数设成 PM_NOREMOVE了然后估计他就一直 只循环执行同一条消息的处理然后关也关不了 强制停止调试就打不开了好吧 我以为Windows可以处理这些 算了好吧 把Debug清空一下 再编译就可以了...原创 2019-09-20 19:36:32 · 314 阅读 · 0 评论 -
PostQuit()的位置 以及重要性
1.重要性:如果那么即便我们将窗口关闭了窗口也销毁了 但是我们的程序仍然没有结束仍然在执即 窗口程序结束了 但我们的应用程序还没结束...原创 2019-09-20 20:21:39 · 175 阅读 · 0 评论 -
COM (component) 的大致理解
原来其实我们总想模块化处理为了一条主线:各模块之间的独立性 为了修改扩充时 方便因此C++面向对象(可继承 内部多态)的编程方式C#什么的 什么的但这些都只是代码层次的模块化一种全新的二进制memory区域层次上的模块化就是com原来我们在模块化 最后也会编译成目标文件 然后到可执行文件 .exe也就是说到最后到物理层 到memory层的时候其实还是 错综在一起 形成...原创 2019-09-20 21:31:54 · 447 阅读 · 0 评论 -
OS消息处理程序详细过程
OS有自己的消息队列和消息循环,至于消息处理工作OS自己可以完成; 同时OS为当前运行的每个Windows应用程序也建立了各自的消息队列,该应用程序的消息循环和消息处理函数(窗口过程函数)需要由应用程序的代码来编写,但是这些应用程序的消息循环和窗口过程函数中的实现操作,还必须依靠OS来完成。(如消息循环中的GetMessage, TranslateMessage, DispathMessage; ...原创 2019-10-05 21:07:42 · 323 阅读 · 0 评论