Directx3D9学习之一:环境搭建与运行第一个程序环境配置(基于VS2012与win7)

2023-11-09

Directx3D9学习之一:环境搭建与运行第一个程序环境配置(基于VS2012与win7)
作者:lhqsine
一、搭建《DIRECTX.9.0.3D游戏开发编程基础》开发环境与第一个程序

1、下载directX库

vs2012以后的版本都集成了基本的directx库,所以如果不需要用到directx3D的扩展库(例如d3dx8~11.lib),则可以直接使用。但是龙书中则用到了d3dx9.lib库,因此还是需要下载微软的DirectX Software Development Kit,下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=6812。

2、安装directX

直接安装即可,假如你先安装了vs2012,则安装到最后会有个报错,这个是由于微软单独的directx到2010_jun_10就没有了再更新,之后安装会检测你的vs版本,如果较新则会报错,其实这个错误不影响后续使用,想避免报错,有个笨方法就是先卸载vs,然后先安装directx3D,之后再安装vs。

3、第一个程序

//
// 
// File: d3dUtility.h
// 
// Author: Frank Luna (C) All Rights Reserved
//
// System: AMD Athlon 1800+ XP, 512 DDR, Geforce 3, Windows XP, MSVC++ 7.0 
//
// Desc: Provides utility functions for simplifying common tasks.
//          
//

#ifndef __d3dUtilityH__
#define __d3dUtilityH__

#include <d3dx9.h>
#include <string>

namespace d3d
{
	bool InitD3D(
		HINSTANCE hInstance,       // [in] Application instance.
		int width, int height,     // [in] Backbuffer dimensions.
		bool windowed,             // [in] Windowed (true)or full screen (false).
		D3DDEVTYPE deviceType,     // [in] HAL or REF
		IDirect3DDevice9** device);// [out]The created device.

	int EnterMsgLoop( 
		bool (*ptr_display)(float timeDelta));

	LRESULT CALLBACK WndProc(
		HWND hwnd,
		UINT msg, 
		WPARAM wParam,
		LPARAM lParam);

	template<class T> void Release(T t)
	{
		if( t )
		{
			t->Release();
			t = 0;
		}
	}
		
	template<class T> void Delete(T t)
	{
		if( t )
		{
			delete t;
			t = 0;
		}
	}
}

#endif // __d3dUtilityH__

//
// 
// File: d3dUtility.cpp
// 
// Author: Frank Luna (C) All Rights Reserved
//
// System: AMD Athlon 1800+ XP, 512 DDR, Geforce 3, Windows XP, MSVC++ 7.0 
//
// Desc: Provides utility functions for simplifying common tasks.
//          
//

#include "d3dUtility.h"

bool d3d::InitD3D(
	HINSTANCE hInstance,
	int width, int height,
	bool windowed,
	D3DDEVTYPE deviceType,
	IDirect3DDevice9** device)
{
	//
	// Create the main application window.
	//

	WNDCLASS wc;

	wc.style         = CS_HREDRAW | CS_VREDRAW;
	wc.lpfnWndProc   = (WNDPROC)d3d::WndProc; 
	wc.cbClsExtra    = 0;
	wc.cbWndExtra    = 0;
	wc.hInstance     = hInstance;
	wc.hIcon   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Directx3D9学习之一:环境搭建与运行第一个程序环境配置(基于VS2012与win7) 的相关文章

  • 复制到 d3dtexture 的 FreeType2 字符显示为双字母

    我最近刚刚开始使用 FreeType 库 并开始尝试从缓冲区复制到 directx9 纹理 然而 尽管我是从通过加载单个字符创建的缓冲区复制的 但目前还是出现了双字母 尝试复制字符 a 以下是我当前的代码 void TexFont free
  • 如何在 VS 2008 中启用 DirectX 变量的更多调试信息?

    我能够启用 directX 变量 如 LPD3DXMESH 等 的调试信息 通常它只显示 IUnknown 和一些指针值 但如果启用了额外的调试 则可以查看有关该结构的更多详细信息 问题是我丢失了该项目 现在我不记得如何再次启用此类调试 请
  • DirectX 或 OpenGL [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 如果您正在用 C 编写下一个 3D 图形密集型应用程序 例如 3D 建模和动画软件 那么哪一个是更好的选择 如果我们认为 C 是独立于平台的 那
  • DirectX:如何绘制平滑的 2D 水(基于粒子的水)

    我最近使用粒子 1000 1500 工作 使用斯托克斯方程 进行水模拟 但我的问题是我使用 IDXSprite 它只是使用蓝色纹理四边形 7x7 绘制粒子 看起来不太平滑 是否有任何方法或已知技术来绘制此类系统 使表面看起来光滑 并且水不应
  • c# text/winForm 覆盖视频游戏,如 xfire、PIX、steam、fraps 等

    我知道有很多关于这个主题的帖子 但是几个月来我一直在寻找解决方案 我在谷歌上查了大约 300 个关于这个的帖子 我发现的唯一好的东西是一个 C 程序 它在 League 的窗口上绘制了一个彩色矩形 我对directx不是很熟悉 我的程序是用
  • XMMatrix 的访问浮点数 - () 运算符不起作用

    我正在尝试在 DirectX 中做一些 3D 工作 我正在从 OpenGL 迁移 但遇到了障碍 我想访问 XMMATRIX 的值并查看 Microsoft 文档 应该有一个 运算符 float operator size t Row siz
  • C++ Directx 11 多显卡

    我正在使用 directx 11 为我的图形编写 C 程序 我的笔记本电脑有一个轻量级英特尔显卡 用于延长电池寿命 并且应该仅用于 轻量级 显卡 我还安装了另一个更强大的显卡 我想知道如何指定在 directx 中使用哪个显卡 当我创建设备
  • 我们可以在透明窗口上应用着色器吗

    I am looking to apply a particular shader to a transparent window for example on a live desktop I want to create a trans
  • directX 创建交换链

    在我的书中 我编写了创建交换链的代码 IDXGIDevice dxgiDevice 0 mD3dDevice gt QueryInterface uuidof IDXGIDevice void dxgiDevice IDXGIAdapter
  • WARP 驱动程序、参考驱动程序和软件驱动程序之间有什么区别?

    在 DirectX 11 中 有四种类型的驱动程序 D3D DRIVER TYPE HARDWARE D3D DRIVER TYPE REFERENCE D3D DRIVER TYPE SOFTWARE D3D DRIVER TYPE WA
  • 使用 DirectX 或 OpenGL 显示 100 个浮动立方体

    我想使用显示 100 个浮动立方体DirectX or OpenGL 我正在寻找一些示例源代码或该技术的描述 我无法正确显示多个立方体 我在网上搜索了一系列很好的教程 尽管他们谈论了如何做3D基元 我找不到有关如何进行大量操作的信息3D原语
  • 如何使用 ComPtr 中包装的 Direct3D 11 指针来获取 11.1 接口?

    我正在遵循教程 并将通常的初始化转换为使用 ComPtrs 直到这一行 ID3D11Device g pd3dDevice nullptr ID3D11Device1 g pd3dDevice1 nullptr Obtain the Dir
  • Application.Run 处的 CallbackOnCollectedDelegate(new Form1())

    我制作了一个非常小的应用程序 使用 SlimDX 捕获游戏中的屏幕 我按左键捕获 捕获有效 至少当我单击表单本身时 但是一旦我单击 Firefox 或任何其他应用程序 我就会收到此异常 对 CaptureScreen CaptureScre
  • DirectX Release 构建可以通过 VS2010 运行,但不能运行 exe

    我已经通过 Google 访问 Stack Overflow 几年了 但到目前为止还没有询问 回答任何问题 所以就到这里吧 基本上 我有一个在 DirectX 11 中设置绘图模型和地形的 3D 渲染框架 一切正常 通过 Visual St
  • 在 C# WPF 或 Windows 窗体应用程序中使用 DirectX c++ DLL

    我用c 编写了一个DX11渲染器 我现在正在寻找一种方法来实现它的编辑器 GUI 由于我非常习惯 Windows 窗体和 WPF C 应用程序 因此我正在考虑将渲染器放入 dll 中 从 C 应用程序加载 dll 并使用它绘制到表单的定义部
  • 超出 CreateConstantBufferView 处虚拟地址的末尾

    我正在遵循 使用 DirectX12 进行游戏编程 ch 6 代码 但在 ID3DDevice CreateConstantBufferView 中 我发现 D3D12 错误 D3D12 错误 ID3D12Device CreateCons
  • 最低 DirectX 9.0c 版本以及如何检查它

    我们基于 Windows C Ogre 的游戏即将完成 在我们公开发布之前 我们必须解决这个问题 如果未更新到最新的 Dx9 0c 版本 Ogre 在许多测试计算机上都会崩溃 所有这些计算机都已经安装了 9 0c 但这一定是旧操作系统预安装
  • 截取 DirectX 全屏应用程序的屏幕截图

    这让我很困惑 DirectX 绕过一切并直接与设备驱动程序对话 因此 GDI 和其他常用方法将不起作用 除非 Aero 被禁用 或不可用 否则出现的只是屏幕左上角的黑色矩形 我已经尝试过其他人在几个论坛上建议的方法 使用 DirectX 获
  • 如何从 IDWriteFontFace 创建 IDWriteTextFormat

    我正在创建 W8 C CX DirectX 应用程序 并且尝试使用应用程序自己的存储中的自定义字体文件 我弄清楚如何使用IDWriteFactory CreateFontFileReference加载ID写入字体文件从目录然后如何创建ID写
  • 3D 图形批处理

    很多网站 文章都说 批量 批 批 有人可以解释一下着色器中的 批处理 代表什么吗 即 是否 改变纹理 更改任意着色器变量 意味着某些东西不能 批处理 最简单的总结方法就是尝试尽可能少地调用 API 来绘制您需要绘制的内容 使用顶点数组或 V

随机推荐

  • 深入浅出Yolo系列之Yolov3&Yolov4&Yolov5&Yolox核心基础知识完整讲解

    因为工作原因 项目中经常遇到目标检测的任务 因此对目标检测算法会经常使用和关注 比如Yolov3 Yolov4算法 Yolov5算法 Yolox算法 当然 实际项目中很多的第一步 也都是先进行目标检测任务 比如人脸识别 多目标追踪 REID
  • Java对象导论,什么是对象

    在think in Java一书中这样表述对象 1 万物皆为对象 将对象视为奇特的变量 它可以存储数据 除此之外 你还可以要求它在自身上执行操作 理论上讲 你可以抽取待求解问题的任何概念化构建 狗 建筑物 服务 等 将其表示为程序中的对象
  • leaflet中fitBounds方法带来的问题

    这个方法用leaflet的同学都用过 可当没有图层的时候添加一个图层用这个方法定位就会出现不能再缩小的问题 第一个图层建议用setview方法 这样不会增加特殊属性minzoom
  • 优化算法——全局灵敏度分析算法(PAWN )(Matlab代码实现)

    欢迎来到本博客 本文目录如下 目录 1 概述 2 使基于SWAT 的高参数模型的 PAWN 和 Sobol 敏感性分析方法的比较 3 Matlab代码实现 1 概述 大量参数是复杂环境模型的主要问题 因为它限制了它们的应用 因此 旨在识别模
  • 华为ICT大赛实践赛备赛经验总结

    华为ICT大赛备赛经验总结 1 比赛形式 去年的省赛是个人赛形式 只有笔试 满分1000分 题目类型为 判断正误 单选 多选 省赛是考试的形式 最后取全校前三作为学校的代表队 然后和其他学校的代表队进行比较 分数最高的进入到国赛 国赛有实践
  • ES返回值数量超过10000条解决方式

    现象 ES默认返回数据量为10000条 当分页的from超过10000条的时候 es就会如下报错 Result window is too large from size must be less than or equal to 1000
  • 【JavaScript】关于手机中的触摸手势操作实现过程详解

    这里实现触摸手势操作的有四个基本方向 上 下 左 右 用javascript语言编写 可以参考下 笔者TA远方在一个文件名为gesture js写了 定义触摸操作中的所有手势 一共8个总方向 包括四个基本方向 还有一个点击 代码如下 con
  • 注解方式开发Servlet程序

    一 注解方式开发Servlet程序 package cn tedu servlet import javax servlet ServletException import javax servlet annotation WebServl
  • Spring MVC中如何使用forward进行请求转发呢?

    转自 Spring MVC中如何使用forward进行请求转发呢 下文讲述Spring MVC进行请求转发的2种方式简介说明 如下所示 Spring MVC种forward请求是一种服务器端请求方式 它无需通过客户端 可以提高系统的转发速度
  • linux sort uniq -c

    文档编辑 sort 功能说明 将文本文件内容加以排序 语 法 sort bcdfimMnr o lt 输出文件 gt t lt 分隔字符 gt lt 起始栏位 gt lt 结束栏位 gt help verison 文件 补充说明 sort可
  • Vue+element 首页业务实现

    接着上篇登录后 登录表单数据发送给服务器 验证成功后返回token口令 储存到浏览器会话窗口 方便登录过后的一些请求发送 统一封装的 axios 配置axios import axios from axios 请求的根路径 axios de
  • 京东苹果商品信息爬取(纯代码)

    from selenium import webdriver from selenium webdriver chrome service import Service from selenium webdriver common by i
  • 阿里云磁盘格式由MBR调整为GPT步骤示例

    阿里云磁盘容量大于2T时 需要将默认磁盘格式MBR 调整为GPT 且调整磁盘格式后 不可以使用磁盘快照回滚 来恢复磁盘里面的内容 磁盘快照也是原MBR格式的 oss扩容 直接升级到2T 磁盘扩容步骤示例 1 停止D盘的tomcat等服务 2
  • 正交矩阵

    UUT UTU I U U T U T U I
  • git format-patch

    转自 https blog csdn net wsclinux article details 53842418 1使用git format patch生成所需要的patch 当前分支所有超前master的提交 git format pat
  • docker安装postgresql 以及源码安装odoo12(全过程)

    通用命令 实时查看docker容器日志 docker container stop start nexus docker container stop start redis docker ps a 列出所有的容器 docker rm 容器
  • 国内达梦数据库相关函数-时间日期

    http blog itpub net 69995127 viewspace 2758308
  • 【Leetcode】比较版本号 c++

    题目描述 给你两个版本号 version1 和 version2 请你比较它们 版本号由一个或多个修订号组成 各修订号由一个 连接 每个修订号由 多位数字 组成 可能包含 前导零 每个版本号至少包含一个字符 修订号从左到右编号 下标从 0
  • vue2.0 element-ui中的el-select选择器无法显示选中的内容

    我使用的是element ui V2 2 3 代码如下 当我选择值得时候 el select选择器无法显示选中的内容 但是能触发change方法 并且能输出选择的值 select vue文件
  • Directx3D9学习之一:环境搭建与运行第一个程序环境配置(基于VS2012与win7)

    Directx3D9学习之一 环境搭建与运行第一个程序环境配置 基于VS2012与win7 作者 lhqsine 一 搭建 DIRECTX 9 0 3D游戏开发编程基础 开发环境与第一个程序 1 下载directX库 vs2012以后的版本