游戏引擎
文章平均质量分 64
Frank---7
从JAVA转C++失败,现在继续卷JAVA的小菜鸡一枚,希望和大家共同进步!
展开
-
DirectX3D中将用点构成的线段进行平移和旋转
【代码】DirectX3D中将用点构成的线段进行平移和旋转。原创 2024-03-28 17:41:40 · 405 阅读 · 0 评论 -
DirectX9.0 3D---EnterMsgLoop参数中指向函数的指针
该函数接受一个名为 ptr_display 的指向函数的指针,该函数指针的参数为 float 类型,返回类型为 bool。函数返回一个 int 类型的值。原创 2024-03-27 20:54:57 · 133 阅读 · 0 评论 -
从0开发游戏引擎---游戏引擎开发
创建项目:创建两个项目一个是GameProject另一个是StrandedEngine,后边这个设置成静态库。也就是lib。原创 2024-03-19 17:13:29 · 174 阅读 · 0 评论 -
从0开发游戏引擎---光照和材质
为了增强场景的真实感,我们就可以为场景增加光照(Lighting)。光照也有助于描述实体形状和立体感。使用光照时,我们无需自定指.定顶点的颜色值;Direct3D会将顶点送入光照计算引擎(light engine),依据光源类型、材质(material) 以及物体表面相对于光源的朝向,计算出每个顶点的颜色值,基于某种光照模型计算出各顶点的颜色,以使绘制结果更加逼真。原创 2024-03-19 15:41:10 · 735 阅读 · 0 评论 -
从0开发游戏引擎---绘制茶壶和立方体
绘制茶壶#include<d3d9.h>#include <d3dx9.h>#include <tchar.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib, "d3dx9.lib")#pragma comment(lib,"winmm.lib") //调用PlaySound函数所需库文件#define WINDOWWIDTH 800#define WINDOWHEIGHT 600//原创 2024-03-18 14:13:39 · 352 阅读 · 0 评论 -
从0开发游戏引擎---物体的平移、旋转和缩放
在Direct3D中,如果我们未进行任何空间坐标变换而直接绘制图形的话,图形将始终处于应用程序窗口的中心位置,在默认情况下这个位置就是世界坐标系的原点(0,0,0)。我们也不能改变观察图形的视角方向。默认情况下的观察方向是世界坐标系的Z轴正方向,也就是垂直程序窗口的位置。原创 2024-03-18 12:41:30 · 1394 阅读 · 0 评论 -
从0开发游戏引擎---索引缓存
我们填充了6个顶点结构,但是一个矩形只有4个顶点。有两个顶点被写入缓存了两次,这样可能会造成-一些内存的浪费,特别是需要渲染的模型很复杂的时候,那时重复的顶点会变得更多,所以在D3D中还引入了索引缓存。索引缓存( (Index Buffers) ),人如其名,它就是一个索引,用于记录顶点缓存中每一个顶点的索引位置。原创 2024-03-15 21:06:19 · 411 阅读 · 0 评论 -
从0开发游戏引擎---顶点与顶点缓存
在游戏中所有的模型都是通过多边形网格来逼近表示的,这些多边形可以是三角面,也可以是四边面。多边形网格是构成物体模型的基本单元。但是最终引擎识别的是三角面。点连成线,线构成面。所以顶点其实是模型最基本的单位。原创 2024-03-15 11:45:57 · 923 阅读 · 0 评论 -
从0开发游戏引擎---使用DirectX绘制三角形(渲染五部曲)
Count:指定要清除的矩形区域的数量。pRects:指向 D3DRECT 结构的指针数组,表示要清除的矩形区域。如果为 NULL,则清除整个缓冲区。Flags:指定要清除的缓冲区,可以是 D3DCLEAR_TARGET、D3DCLEAR_ZBUFFER 和 D3DCLEAR_STENCIL 的组合。Color:清除后的颜色值。Z:清除后深度缓冲区的默认值。Stencil:清除后模板缓冲区的默认值。第一个参数:指定要清除的缓冲区,0 表示主后台缓冲区(渲染目标)。原创 2024-03-15 10:32:12 · 847 阅读 · 0 评论 -
从0开发游戏引擎---初始化DirectX
/步骤1:获取我们硬件设备信息//函数Direct3DCreate9的参数必须是D3D_SDK_VERSION,只有如此方能保证应用程序使用正确的头文件。如果该函数调用失败,将返回一//个NULL指针if(!d3d9 )//步骤2:检查硬件是否支持顶点运算//UINT Adapter:指定物理显卡的序号//D3DDEVTYPE DeviceType:指定设备类型(例如硬件设备D3DDEVTYPE_HAL)或软件设备(D3DDEVTYPE_REF)原创 2024-03-14 14:36:15 · 1422 阅读 · 0 评论 -
从0开发游戏引擎---表面和深度缓存
如果想要平滑的显示动画呢?多数计算机动画通过在离屏表面里绘制每帧动画,然后以极高的速度将图像转入可见的显示表面。通过这种方式,用户不会看到你擦除图像、生成显示以及其它对每一帧画面所做的事。只要离屏的图像可以在足够端的时候内被复制到可见表面。原创 2024-03-14 14:31:17 · 336 阅读 · 0 评论 -
VS2008 C++ 项目怎样添加“依赖”、“库目录”和“包含目录”
解决方案资源管理器]“项目->属性->配置属性->链接器->输入->附加依赖项”里填写“winsock.lib”,多个 lib 以空格隔开。(等同于“#pragma comment(lib, “winsock.lib”) ”语句)原创 2024-03-14 10:14:08 · 616 阅读 · 0 评论 -
从0开发游戏引擎---DDA(digital differential analyzer)算法
本质上,图形的生成是在指定的输出设备上,根据坐标描述构造二维几何图形。随机扫描显示器和向量绘图仪等模拟设备能将输出指令保存在显示文件中,再由指令直接绘制出图形。而对于更具广泛意义的光栅扫描显示器等数字设备来说,图形的输出是将出书平面,如光栅扫描显示屏幕,看做像素的矩阵,在该矩阵上确定一个像素的集合来逼近该图形,如图所示。这里的图形生成算法针对后一种图形的光栅化的情形,给出在光栅扫描显示器等数字设备上确定一个最佳逼近与图形的像素集的过程,又称图形的扫描转换。逼近过程的本质可以认为是连续量向离散量的转换。原创 2024-03-13 21:27:18 · 414 阅读 · 0 评论 -
从0开发游戏引擎---显示器和显卡介绍
光栅扫描显示器是画点设备,可看做是一个点阵单元发生器,这些点阵单元被称为像素(pixel)。光栅显示器不能从单元阵列中的一个可编址的像素点直接画一条直线到另一个可编的像素点,只能用靠近这条直线路径的像素点集来近似的表示这条直线。只有在绘制水平直线,垂直直线及对角线时,像素点集在直线路径上的位置才是准确的,其它情况下均是阶梯形。形成锯齿线。由于荧光粉的余辉效应,电子束轰击屏幕后,荧光亮度不是立即消失,而是按指数规律衰减,这样可以看到全屏幕的完整图像。原创 2024-03-13 12:20:14 · 884 阅读 · 0 评论 -
从0开发游戏引擎---定时器
产生时间:在程序中创建定时器,当到达时间间隔时,定时器会向程序发送一个WM_ TIMER 消息。定时器的精度是毫秒,但是准确度很低,例如设置时间间隔为1000ms,但是会在非1000毫秒到达消息。附带信息:wPARAM:定时器ID (计时器标识符。IPARAM:定时器处理函数的指针(指向安装计时器时传递给SetTimer函数的应用程序定义的回调函数的指针。注意:在计时器过期时发布到安装线程的消息队列。消 息由GetMessage或PeekMessage函数发布。原创 2024-03-13 10:17:57 · 603 阅读 · 0 评论 -
从0开发游戏引擎---键盘和鼠标消息
键盘输入以消息的形式传递Windows使用了8种不同的消息来表示各种键盘事件。这看起来可能多了一些,但是(就像我们将要看到的)你的程序忽略掉至少一半的消息是完全可能的。同样,在大多数情况下,你的程序所需要的键盘信息很可能少于这些消息中所编码的信息。处理键盘工作的一部分内容就是要知道哪些消息是重要的,哪些是不必要的。原创 2024-03-12 21:34:43 · 573 阅读 · 0 评论 -
从0开发游戏引擎---GDI绘图(画点、线、矩形和椭圆)
它的功能是从窗口的当前点(也就是从MoveToEx)指明的窗口当前点到LineTo指定的点绘制一条直线。虚构的边框画在网格上,然后在边框内绘制矩形。使用Elipse函数绘制的图形如图5-9所示(使用虚构的边框)。能用画刷填充的图像才能叫做封闭图形,不能用画刷填充的不叫封闭。虽然用线条围起来之后视觉上是封闭的,但是依然不能叫做封闭图形。在客户区左上角和矩形的左上角之间有一个像素宽的分隔区域。实心画刷可以给封闭的图形填充单一的颜色。纹理画刷是给封闭的图形填充纹理线。给封闭的图形填充颜色和图案。原创 2024-03-12 16:06:59 · 491 阅读 · 0 评论 -
从0开发游戏引擎---添加菜单和响应按钮消息
菜单、图片这种东西,那么如果你的程序中用到图片或者菜单这种东西了,那就需要有一个后缀为rc的文件。这个文件里面写的是一些脚本语言的代码,描绘你的资源,描绘你的图片,描绘你的菜单。那么谁认识rc文件中的脚本代码呢?一个叫做RC.EXE的编译器,它认识。它能够把rc文件中的脚本语言翻译成机器语言然后通过链接器,一并存到最终文件中。原创 2024-03-12 13:52:39 · 334 阅读 · 0 评论 -
从0开发游戏引擎---Windows消息处理机制和基本消息
产生时间:当点击窗口的最大化、最小化、关闭等。附带信息: .wParam:具体点击的位置、eg关闭SC_ CLOSE 等IParam:鼠标光标的位置eg点击右上角的关闭按钮产生的消息其实是它LOWORD(lParam):水平位置HIWORD (IParam): 垂直位置。原创 2024-03-12 11:00:16 · 348 阅读 · 0 评论 -
从0开发游戏引擎---从0创建一个窗口
一个叫_ T的宏是如下定义的:#define _T(x) L##x这是相当模糊的语法,但它在ANSIC标准的C预处理中。那一对数字符号被称为“令牌粘贴”,它使得字母L和宏参数拼接在一起。因此,如果宏参数是“Hello!" ,那么L##x就是L“Hello!T 宏就简单的如下定义:#defineT(x) x无论如何,其它两个宏是定义成和T一样的:Win32控制台程序使用哪一种取决于你所需要的简明或详细程序,基本上,必须用下列方式将字符串字面定义在_T 或TEXT 宏内:”)原创 2024-03-12 10:04:39 · 962 阅读 · 0 评论