DirectX9.0 入门手册(4)

DIRECTX 9入门(1)初始化 要使用DIRECTX 9有两个很重要的变量DIRECT OBJECT和DIRECT DEVICE:DIRECT OBJECT提供了一些接口,用这些接口可以知道有哪些设备和设备的信息。创建DIRECT OBJECT:IDIRECT3D9 *Direct3DCreate9(D3D_SDK_VERSION);这里的参数必须为D3D_SDK_VERSION,如果传了错误的版本号码,这个函数将失败,并且返回NULL。DIRECT DEVICE提供渲染的一些接口。利用DIRECT OBJECT来创建DIRECT DEV 阅读详情

       第一次写这种文章,再加上自己也是菜鸟,虽然有部分内容是参考一些书籍及自己翻译一些英文文章所写出来的,但我相信文章里面肯定也还有很多bug,如果你发现了请告诉我,或者你有什么想法也可以和我交流,我诚心和志同道合的人成为朋友,我的QQ是61010818,我的邮箱fowenler@126.com

·D3D中的图元简介

       在D3D中,一共有三种基本图元,分别是点、线和三角形。点是最简单的图元,由它可以构成一种叫点列(point list)的图元类型。线是由两个不重合的点构成的,一些不相连的线组成的集合就叫线列(line list),而一些首尾相连但不形成环路的线的集合就叫线带(line strips)。同理,单独的三角形集合就叫三角形列(triangle list),类似于线带的三角形集合就叫三角形带(triangle strips),另外,如果多个三角形共用一个顶点作为它们的一个顶点的话,那么这个集合就叫三角形扇(triangle fans)。还是画图比较容易理解吧:

       这些图元有什么用呢?基本上我们可以使用这些图元来画我们想要的任何物体。例如画一个四方形可以使用三角形带来画,画一个圆则使用三角形扇。

       现在介绍一种不需要顶点缓冲来渲染的方法,就是使用IDirect3DDevice9::DrawPrimitiveUP函数。UP就是User Pointer的意思,也即是说要使用用户定义的内存空间。

HRESULT DrawPrimitiveUP(

    D3DPRIMITIVETYPE PrimitiveType,

    unsigned int PrimitiveCount,

    const void *pVertexStreamZeroData,

    unsigned int VertexStreamZeroStride

);

 

 

 

       PrimitiveType:要绘画的图元的种类。就是上面介绍的那六种类型。

PrimitiveCount:要绘画的图元的数量。假设有n个顶点信息,绘画的图元类型是点列的话,那么图元的数量就是n;如果绘画的图元类型是线列的话,那么图元的数量就是n/2;如果是线带的话就是n-1;三角形列就是n/3;三角形带就是n-2;三角形扇出是n-2。

pVertexStreamZeroData:存储顶点信息的数组指针

VertexStreamZeroStride:顶点的大小

·使用顶点缓冲来绘画图元

很多时候我们使用顶点来定义图形之后,就把这些顶点信息放进顶点缓冲里面,然后再进行渲染。使用点顶缓冲的好处以及如何创建顶点缓冲我已经在上一章已讲过了,现在讲讲怎么把顶点缓冲里面的图元给画出来。其实也很简单,和上面的IDirect3DDevice9::DrawPrimitiveUP函数差不多,我们使用IDirect3DDevice9::DrawPrimitive函数。不过在使用这个函数之前,我们得告诉设备我们使用哪个数据源,使用IDirect3DDevice9::SetStreamSource函数可以设定数据源。

HRESULT SetStreamSource(

   UINT StreamNumber,

   IDirect3DVertexBuffer9 *pStreamData,

   UINT OffsetInBytes,

   UINT Stride

);

 

 

 

       StreamNumber:设置和哪个数据流梆定。如果使用单数据流的话,这里设为0。最多支持16个数据流。

pStreamData:要绑定的数据。也就是我们创建的顶点缓冲区里面的数据。

OffsetInBytes:设置从哪个字节开始读起。如果要读整个缓冲区里面的数据的话,这里设为0。

Stride:单个数据元素的大小。如果数据源是顶点缓冲的话,那么这里就是每个顶点信息的大小(Sizeof(vertex))。

设置好数据源后,就可以使用IDirect3DDevice9::DrawPrimitive来绘画了。

HRESULT DrawPrimitive(

   D3DPRIMITIVETYPE PrimitiveType,

   unsigned int StartVertex,

   unsigned int PrimitiveCount

);

 

 

 

PrimitiveType:要绘画的图元的种类。

StarVertex: 设置从顶点缓冲区中的第几个顶点画起。没有特殊情况当然是想把全部的顶点画出来啦,所以一般这里设置从0开始。

PrimitiveCount:要绘画的图元的数量。

 

 

 

好了,这章比较简单。写到这章的时候我才发现这不是入门手册,有一些重要但是我觉得没必要讲的东西我都没有讲明。如果是新手看我写的这些东西,搞不好还会被我迷惑了,呵呵。所以还是建议大家看DXSDK里面的说明文档,虽然是英文的,但是很详细,我现在都还没有看完呢。

       嗯,前面四章把最基本的东西讲完了,使用前面的知识我们可以画一些简单的静止图形。下一章就开始讲矩阵了,它可以使我们的图形动起来。

【DirectX 9.0c入门教程】之一 开发环境搭建:安装vs2008 sp1和DirectX SDK 本系列文章由@胡子长长了出品,转载请注明出处。   文章链接: http://blog.csdn.net/hzzcle/article/details/49717695 作者:胡子长长了    微博:http://weibo.com/hzzcle 一、安装VS2008 SP1 阅读详情

相关推荐

Directx11 HelloWorld之与Directx9的比较

这些天终于受不了诱惑,决定入手Directx11。看个HelloWord的程序。  先看看整体框架:所有函数的声明。可以看到和D3d9c差不多,都是初始化窗口,创建设备,清理设备,消息循环和渲染。下面我们将看到发生变化的主要是创建设备的InitDevice()函数,其他都是些MFC框架。  HRESULT InitWindow( HINSTANCE hInstance, int nCmdShow );   HRESULT InitDevice();  void CleanupDevice();  LRESU

算法,时空数据挖掘 3896

D3D9--图元

D3D9--图元                Direct3D9中有6种图元,就是最基本的图形,再复杂的模型也是以这6种图元构造而成。   1.准备工作   定义顶点格式和布局,并初始化14个顶点 struct Vertex { D3DXVECTOR3 Position; D3DCOLOR Diffuse; }; D3DVERTEXELEMENT9

TechTiger的博客 1617

C语言图形编程入门:基于DirectX 9.0的太阳系模拟

本文还有配套的精品资源,点击获取 简介:本项目通过"Ex01"教学实例展示如何使用C语言结合DirectX 9.0开发图形应用程序,重点在于绘制太阳系模型和控制飞船移动。内容涵盖了C语言基础、DirectX 9.0的初始化、图形绘制、键盘输入处理、三维图形编程等关键概念。学习者将通过实际操作理解C语言在图形编程中的应用,从而提升编程技能和解决实际问题的能力。 1....

weixin_33245447的博客 1141

DirectX 9 中的Primitive类型

D3DPT_POINTLIST:1.把指定的坐标看作是一个个单独的点,所以画上去的图形也就是一个个点,并不会对点之间的空白进行插值;D3DPT_LINELIST:2.根据顶点的顺序,把每两个点画成一条线段,所以在显示器上看上去就是几条线段;D3DPT_LINESTRIP :3.和D3DPT_LINELIST不同的是,该类型从一点开始,把所有的点首尾相接,画成一条折线段;4.D3DPT_TRIANG...

FELURKINDA的专栏 299

DirectX9中文帮助手册(要学习DirectXShow先学这个)

DirectX9中文帮助手册(要学习DirectXShow先学这个) DirectX是一系列低级的应用程序接口(APIs),它用于创建游戏和其他高执行效率的多媒 体程序。它包括对高效的2-D和3-D图形、音效和音乐、输入设备、力反馈设备、多媒体 - 10 - 流和例如多人游戏的网络通信程序。

Ren’py教程《从入门到精通》

Ren’py是什么?Ren'py是一款用于制作视觉小说、冒险游戏、galgame的游戏制作工具,被来自世界各地的数千名创作者使用。Ren'py的名字由Ren’ai和Python混合而成,而Python也是Ren'py所使用的环境语言。Ren'py可以帮助你使用文字、图像和声音来讲述在计算机和移动设备上运行的交互式故事。这些既可以是视觉小说,也可以是生活模拟游戏。易于学习的脚本语言允许 任何人都可以有效地编写大型视觉小说,而它的Python 脚本足以应对复杂的 模拟游戏。

2302_77140651的博客 1万+

Direct3D中的绘制

文章主要介绍如何在Direct3D中进行绘制,内容包括顶点缓存、索引缓存、绘制状态、绘制前的准备工作等。

Spring_24的博客 622

单细胞RNA测序数据分析与可视化:从基础原理到高级应用

单细胞RNA测序(scRNA-seq)技术通过解析单个细胞的基因表达谱,显著提升了我们对细胞异质性的理解。本文详细介绍了scRNA-seq数据分析的完整流程,包括数据预处理、质量控制、降维、聚类、差异表达分析、细胞类型注释、细胞周期分析、轨迹分析、RNA速率分析、基因集富集分析、细胞通讯分析、批次效应校正以及空间转录组学整合。文章还展示了scrna_toolkit包在简化分析流程和增强数据可视化方面的应用。通过这一工具,研究者可以更高效地处理单细胞数据,揭示复杂的生物学信息。未来,该工具将进一步整合多组学分

2301_80338712的博客 4131

D2D画圆 B站Direct2D P3

graphics.h #pragma once #include <Windows.h> #include <d2d1.h> #pragma comment(lib, "D2d1.lib") class Graphics { private: ID2D1Factory* factory; //D2D工厂 ID2D1HwndRenderTarget* rendertarget; //D2D渲染目标 ID2D1SolidColorBrush* brush; //D2D画刷

ip68681的博客 380

零成本接入Gemini Pro:GCP+NewAPI+OpenCode全栈方案

AI编程助手在现代开发流程中扮演着越来越重要的角色,其核心原理是通过大语言模型理解开发者意图并生成代码。以Gemini Pro为代表的顶级模型虽然能力出众,但成本控制和接入复杂度成为主要痛点。通过Google Cloud Platform的免费额度与开源工具链组合,开发者可以构建零成本的AI辅助开发环境。该方案采用Vertex AI作为基础模型服务,通过New API实现协议转换,最终与OpenCode终端工具深度集成。这种架构特别适合需要长期稳定使用AI编程助手的开发者,既能享受Gemini Pro的百万

weixin_29051245的博客 431

LTC3783 LED驱动控制器设计与效率优化详解

开关电源控制器是现代LED照明的核心器件,通过电流模式控制实现高效能量转换。其核心原理是通过采样电阻检测负载电流,配合误差放大器形成闭环调节,在汽车电子、显示背光等场景中确保±3%的电流精度。LTC3783作为典型代表,集成升压/降压-升压多拓扑支持,配合PWM调光技术可实现3000:1的无色偏调光范围。在工程实践中,需重点考量功率电感选型、MOSFET开关损耗与热管理设计,例如在38W功率方案中采用10μH/5A电感和4.5mΩ MOSFET可达成95%效率。该方案特别适用于需要应对9-36V宽输入电压波

weixin_36231030的博客 400

DirectX考点归纳

Direct3D游戏编程入门教程第2版 考点归纳试卷的考题类型有:单选题、多选题、名词解释/简答题、分析题等。第01章 Direct3D/DirectX历史DirectX8有哪些新特性:1 Point spite(点精灵)2 3D体纹理3 对direct3DX库的改进4 N-patches5 顶点shader和像素shaderPoint spite可以生成:火花、爆炸、雨、雪等效果。3D体纹理可以

gogoda的专栏 5014

【实验】ENSP 实战:酒店有线 + 无线三层组网全配置(VLAN 规划 + AC/AP+SSID 绑定)

三层架构:出口路由器 → 核心交换机 → 汇聚交换机 → 接入交换机 / AP / 终端。

jundao1997的专栏 431

DirectX9.0 入门手册(2)

DirectX9.0 入门手册(2) ·创建IDirect3D接口DirectX是一组COM组件,COM是一种二进制标准,每一个COM里面提供了至少一个接口,而接口就是一组相关的函数,我们使用DirectX,其实就是使用那些函数。COM和C++中的类有点像,只不过COM使用自己的方法来创建实例。创建COM实例的一般方法是使用coCreateInstance函数。有关coCre

kiss0kill的专栏 1530

影像技术实战02:FFmpeg 镜头切分误检、漏检问题排查与基于场景变化的稳定分镜方案

本文介绍了基于FFmpeg的镜头切分技术在实际应用中的常见问题及解决方案。文章首先指出单纯使用select='gt(scene,0.4)'命令进行镜头检测存在误检、漏检等问题,包括黑场、字幕变化被误判为镜头切换,以及相似场景切换被漏检等情况。随后提出了一套四层架构的稳定解决方案:1)用FFmpeg提取候选镜头变化点;2)解析变化点时间和分数;3)通过后处理过滤异常点;4)按时间点切割视频片段并生成报告。文中详细展示了Python实现代码,包括场景点检测、时间间隔过滤等功能模块,为视频剪辑、影视解说等场景提供

ai技术增长的博客 401

RML2018.01a数据集的读取与使用

基于深度学习的自动调制识别

QAQIknow的博客 1万+

DirectX9.0 入门手册

    下面正式开始,先讲窗口类,创建窗口,销毁窗口,窗口消息处理函数. ·窗口类WNDCLASS struct WNDCLASS {    UINT        style;    WNDPROC     lpfnWndProc;    int         cbClsExtra;    int         cbWndExtra;    HINSTAN

刘昊峰的博客 1745

Oracle EBS R12.2.X JSP部署、编译和配置相关操作。

系统环境 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 背景 在某项目上,需要开发JSP相关程序,比如单点登陆、打印二维条码。当前把JSP部署编译以后,访问提示错误:Requested resource or page is not allowed in this site, 通过查SR发现Oracle EBS R12.2.X版本对客制化JSP进行权限控限,需要设置某些配置文件。 实例操作步骤 上传JSP文件 通常上传到$OA_HTML目录或其子目

陈显平的专栏-Oracle EBS 1911

DirectX9.0 入门手册(1)

DirectX9.0 入门手册(1) .      这一章我先不写有关DX的东西,我先从最基本的窗口创建讲起,然后再慢慢讲解使用DX的一些内容.       我写这个指南的主要目的是为了学习。我希望自己可以通过写这个指南更快地学会DirectX。同时,我也希望为其他想学习的同伴提供一些学习资料。在编程方面,我并不是很强的人,再加上人总是会犯错的,如果我这些文字给贻笑大方的话,

kiss0kill的专栏 1128

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

DirectX9.0 入门手册(3)

DirectX9.0 入门手册(3)     第一次写这种文章,再加上自己也是菜鸟,虽然有部分内容是参考一些书籍及自己翻译一些英文文章所写出来的,但我相信文章里面肯定也还有很多bug,如果你发现了请告诉我,或者你有什么想法也可以和我交流,我诚心和志同道合的人成为朋友,我的QQ是61010818,我的邮箱fowenler@126.com·顶点属性与顶点格式

kiss0kill的专栏 961

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

DirectX9.0 入门手册【转贴】

这一章我先不写有关DX的东西,我先从最基本的窗口创建讲起,然后再慢慢讲解使用DX的一些内容.  我写这个指南的主要目的是为了学习。我希望自己可以通过写这个指南更快地学会DirectX。同时,我也希望为其他想学习的同伴提供一些学习资料。在编程方面,我并不是很强的人,再加上人总是会犯错的,如果我这些文字给贻笑大方的话,我接受大家对我提出有建设性的批评,如果你有更好的想法要和我交流,可以联系我:fowe

一兰阳光 2596

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

DirectX9.0c怎么下载安装,最新DirectX快速修复攻略分享

它并非单纯的图形 API,而是包含了 Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects 等多个组件的一套多媒体接口方案。以上就是有关于DirectX9.0c下载安装的内容分享,还有几个快速有效的DirectX修复方法,感兴趣的朋友不妨一起来看看吧。欢迎大家评论区留言交流。

Cybertronnnnnn的博客 7882

DirectX9.0c怎么下载安装,最新DirectX快速修复攻略分享

本文提供2025年最新DirectX 9.0c下载安装与问题修复攻略。微软已不再提供独立安装包,推荐使用官方DirectX End-User Runtime补充遗留组件。安装方法包括在线安装器和离线完整包两种方式,建议配合DirectX Repair工具一键修复常见问题。文章详细介绍了缺失dll文件、游戏闪退等问题的解决方案,并提醒用户注意避免从不明站点下载,优先使用官方工具组合解决问题。适用于Windows系统运行老游戏时遇到的DirectX相关问题修复。

likuoelie的博客 8068
上一篇: 一位高级程序员给学弟学妹的建议(转载)
下一篇: DirectX9.0 入门手册(5)
Isaf
博客等级 码龄21年 31粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值