[求助D3D画2D]从GDI系列到DirectX的思路怎么转变

沈-军涛 2013-04-20 08:22:01
我一开始学的GDI和GDI+也算有小成,但是用做游戏中就有点力不从心了。
现在想学DX了但是不论是思想方式还是做法都转不过来。
总想着先画到一个位图上然后到另一位图再到屏幕之类的!
而DX有一个图像只能真接画到屏幕上(后台屏幕上)没办法画到另一缓冲上。

我的想法是比如在游戏中画不同的都东西互不干扰,也就是每个要画的东西在一个缓冲上
比如人物,人物身上可能还有东西等,把整个人物画好了再想去把这个人放到下一缓冲的什么位置,缩放等问题



不知道是我思路有大问题还是其它的!
所有分来问的 先谢谢各位!
...全文
238 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2013-04-25
  • 打赏
  • 举报
回复
顶点就是多边形的顶点 索引,是因为系统不支持三角形之外的多边形渲染,必须把多边形拆解成为多个三角型来处理 这样会导致传递给显卡的数据量增加, 比如五边形变成三个三角形后,传递的数据是9个顶点了 但是并不是9个完全不同的顶点,其中多出来的4个顶点数据是重复的,独立的还是5个 为了节省传输数据量, 引入了索引模式 还是传递5个顶点数组进去, 再传递顶点数组组成的三个多边形去渲染 因为顶点当中包含的信息不仅仅是x,y,z,往往还有颜色,纹理坐标,顶点法向量等数据,所以一个顶点的数据量会很大, 重复多次自然就浪费, 而索引就是一个整数,故而综合下来可解决数据传输量 需要明白显卡渲染速度快慢的瓶颈在哪里, pc机的总线分时共享架构带来的数据传输量是最大的瓶颈,节约传输量是最大的速度优化了
沈-军涛 2013-04-25
  • 打赏
  • 举报
回复
引用 3 楼 happy__888 的回复:
1&2 不完全是渲染到纹理 渲染到纹理本意是用纹理代替屏幕做输出,从而获得特定的投影图象, 这个方法是一种 你的方式,完全可以通过更换纹理来达到换装的目的 一个人物分成多组多边形,每组设置一个不同纹理表达不同的可换装的部位, 通过更换纹理换装 2d是3d的投影,是3d的一个小技巧, 处理起来大部分的内容还是和3d一样的,所以看3d的书也一样
多谢,我一直以2D和3D就不一样呢, 能不能用白话说下什么是顶点和索引,它们是干什么的东西.
寻开心 2013-04-25
  • 打赏
  • 举报
回复
1&2 不完全是渲染到纹理 渲染到纹理本意是用纹理代替屏幕做输出,从而获得特定的投影图象, 这个方法是一种 你的方式,完全可以通过更换纹理来达到换装的目的 一个人物分成多组多边形,每组设置一个不同纹理表达不同的可换装的部位, 通过更换纹理换装 2d是3d的投影,是3d的一个小技巧, 处理起来大部分的内容还是和3d一样的,所以看3d的书也一样
寻开心 2013-04-25
  • 打赏
  • 举报
回复
:) 3d其实不难, 至少入门并不难 只要你安心下去,找一本从入门介绍基础理论的书开始看,或者是安心的看dxsdk 最多一个月就能入门 但是3d越往后越难, 这个要有心理准备
沈-军涛 2013-04-25
  • 打赏
  • 举报
回复
引用 7 楼 happy__888 的回复:
directx或者说显卡并不支持直接渲染一个矩形 需要把它变成两个三角形传递给他去渲染 至于分成四个三角形,你的意思是可以把三角形再细分吧? 是可以这样做,而且分的细光照的效果会更好(光照都是在顶点计算中间插值生成的缘故) 现代显卡每秒钟处理三角形的数目是非常庞大,你可以看具体的显卡的型号, 三角型的生成速率大概都在 数十M/s 上, 几个亿的生成率;但是实际使用当中,一……
又感到了原来我自学C++那会的感觉,那么我只学一点点基础C语言,什么也不会,我问的问题现在看来更是二到不可想像,但是还是有人愿意为我析心解释. 大恩不言谢,我唯一能做的就是将这份无私帮人的心意进行下去(现在也一直在这样做), 多谢了!
寻开心 2013-04-25
  • 打赏
  • 举报
回复
directx或者说显卡并不支持直接渲染一个矩形 需要把它变成两个三角形传递给他去渲染 至于分成四个三角形,你的意思是可以把三角形再细分吧? 是可以这样做,而且分的细光照的效果会更好(光照都是在顶点计算中间插值生成的缘故) 现代显卡每秒钟处理三角形的数目是非常庞大,你可以看具体的显卡的型号, 三角型的生成速率大概都在 数十M/s 上, 几个亿的生成率;但是实际使用当中,一秒钟处理几万个带纹理材质的模型跑的都会很顺畅 从三维渲染来说,你所说的分开渲染只是把场景分批次传递给显示卡去处理而已, 还是在一个场景的渲染循环的大过程当中 分数是没所谓的,呵呵
沈-军涛 2013-04-25
  • 打赏
  • 举报
回复
引用 5 楼 happy__888 的回复:
顶点就是多边形的顶点 索引,是因为系统不支持三角形之外的多边形渲染,必须把多边形拆解成为多个三角型来处理 这样会导致传递给显卡的数据量增加, 比如五边形变成三个三角形后,传递的数据是9个顶点了 但是并不是9个完全不同的顶点,其中多出来的4个顶点数据是重复的,独立的还是5个 为了节省传输数据量, 引入了索引模式 还是传递5个顶点数组进去, 再传递顶点数组组成的三个多边形去渲……
1. 那是不是说我想渲染一个长方形(矩形)可以两个三角形,但是也可以是四个三角形,而不同的分法就是对显卡渲染速度的有影响了呢? 2. 一般来说一屏幕可以渲染多少个三角形呢?我知道我肯定和显卡的能力有关系,但至少也有个大概吧. 3. 如果想要分开渲染(拿Windows的默认计算器来说),在一个类里渲染背景,在一个类里渲染显示框(结果框),在一个类里渲染按钮.大概思路如何呢? 你已经帮我良多,我今天没什么可用分,明天给你结贴,再加上我的所有可用分,再谢
沈-军涛 2013-04-24
  • 打赏
  • 举报
回复
引用 1 楼 happy__888 的回复:
1 把你的GDI当中的位图理解成为Dx当中的纹理就可以了 2 gdi当中的多个位图的组织关系, 对应于dx当中的场景当中的模型的组织关系 比如,人物模型上,有许多不同的区域,每个区域是独立的纹理控制, 换纹理就是换装备 gdi和dx确实有很多的不同, 只要熟悉了几个sdk的教程例子里面的处理流程后, 也不是很难理解
1. 如您所说的也就要用渲染到纹理吗? 2. 按您说的我可不可以理解为我渲染N个立方体,在这N个立方体的贴图纹理上画想要的东西就行了吗,还是有其它的办法? 还有我只想做2D方面的有没有什么推荐的书什么的,最好是DX9的.我也看过一些书不过不是一来就是顶点索引就是DDraw的! 多谢您了!
寻开心 2013-04-23
  • 打赏
  • 举报
回复
1 把你的GDI当中的位图理解成为Dx当中的纹理就可以了 2 gdi当中的多个位图的组织关系, 对应于dx当中的场景当中的模型的组织关系 比如,人物模型上,有许多不同的区域,每个区域是独立的纹理控制, 换纹理就是换装备 gdi和dx确实有很多的不同, 只要熟悉了几个sdk的教程例子里面的处理流程后, 也不是很难理解

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧