Questions tagged «directx»

DirectX是Microsoft提供的一组多媒体API,主要针对游戏开发人员。DirectX集合中的流行API包括Direct3D,XInput和XAudio。

1
如何将子弹物理学整合到我的游戏中?
我下载了在此处找到的发行文件,但不确定从哪里开始。在我的游戏中,我有多个椭圆和一个球体,我希望所有这些相互碰撞。(它们都有网格和相关的边界体积) 编辑-我只是意识到长方体实际上与AABB关联。我想至少得改变一下。 我需要遵循哪些步骤?

3
仅高细节渲染屏幕的一部分
如果以较大的视角渲染图形(例如,非常大的电视或VR头戴式受话器),则观看者实际上无法将注意力集中在整个图像上,而只是整个图像的一部分。(实际上,常规尺寸的屏幕也是如此。) 结合跟踪观众眼睛的方式(我想这在VR中几乎是可行的),您可以在理论上加以利用,并通过逐渐减少细节和分辨率来使图形远离观众焦点,从而获得性能,而不会损失感知质量。 今天有没有可用的或正在开发的技术?

1
管理图形状态和组件?
在处理图形时,我经常倾向于做很多过早的优化。我一直尝试遵循一些原则: 使D3D组件的数量最少。(渲染状态,缓冲区,着色器等) 仅在绝对必要时绑定组件。(尚未绑定,等等。) 尽可能专门化组件。(仅设置必要的BindFlags等) 这导致我构建非常复杂的包装器来管理创建的组件和当前管道状态。这不仅消耗了我宝贵的开发时间,还增加了另一层复杂性。 最糟糕的是:我什至不知道这一切是否值得麻烦。 我的一些优化考虑因素可能已经在较低级别上实现,而我只是在复制它们,从而浪费了CPU时间。由于对性能的影响可以忽略不计,因此其他考虑可能完全没有必要。 所以我的问题是: 以上哪些准则有效,我应在多大程度上遵循这些准则? GPU如何处理状态变化? 如果我更改了一个从未使用过的状态会怎样?(处于活动状态时,不会进行抽奖。) 绑定各种不同组件的实际性能损失是什么? 还应考虑哪些其他性能方面的考虑? 请不要只是告诉我,在达到实际极限之前,我不应该关心性能。从实践的角度来看,这显然是正确的,但我主要对该理论感兴趣。我不知何故需要抵制建立最佳图形框架的冲动,而且我认为我通常无法通过“过早的优化讲座”来做到这一点。 管理组件 我目前正在使用SlimDX作为托管包装用C#编写DirectX 11应用程序。这是一个非常低级的包装器,而我当前的抽象是基于它的。 使用Direct3D抽象时,有一些明显的优势。设置环境,加载着色器,设置常量和绘制网格更加简单,并且使用的代码更少。而且,由于它管理着大多数组件的创建和处理,因此它们可以在任何地方自动重用,而且我几乎完全避免了内存泄漏。 您通常如何管理所有图形组件和资源? 您能否推荐任何与下面的示例类似的托管包装器? 这是我当前实现的一个示例。我对界面非常满意。它具有足够的灵活性来满足我的需求,并且易于使用和理解: // Init D3D environment var window = new RenderForm(); var d3d = new Direct3D(window, GraphicsSettings.Default); var graphics = new GraphicsManager(d3d.Device); // Load assets var mesh = GeometryPackage.FromFile(d3d, "teapot.gp"); var …

4
HLSL着色器实际上如何最终影响渲染输出?
我了解HLSL的语法,例如,让我们假设我将其作为HLSL: struct VOut { float4 position : SV_POSITION; float4 color : COLOR; }; VOut VShader(float4 position : POSITION, float4 color : COLOR) { VOut output; output.position = position; output.position.xy *= 0.7f; // "shrink" the vertex on the x and y axes output.color = color; return output; } float4 PShader(float4 position …
11 directx  hlsl 

2
由于libGDX中不推荐使用Table.drawDebug,因此应该使用什么呢?
我正在按照“学习LibGDX游戏开发”一书来制作一个简单的游戏。我在菜单创建部分中,在其中创建一个舞台并使用调试边框对其进行渲染。 这本书说要使用,Table.drawDebug(stage)但是这个静态方法似乎已经从框架Table类中完全删除了。 我正在进口com.badlogic.gdx.scenes.scene2d.ui.Table; 下面是我的代码: @Override public void render(float deltaTime) { Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); if (debugEnabled) { debugRebuildStage -= deltaTime; if (debugRebuildStage <= 0) { debugRebuildStage = DEBUG_REBUILD_INTERVAL; rebuildStage(); } } stage.act(deltaTime); stage.draw(); Table.drawDebug(stage); } 最后一行,Table.drawDebug(stage);有编译错误"The method drawDebug(ShapeRenderer) in the type Table is not applicable for the arguments (Stage)" …

6
Visual Studio 2012和游戏开发
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 5年前关闭。 好吧,我认为这是一个简单的问题,但是我很难找到一些答案。 我已经读过XNA不在Visual Studio 2012中。我最近学会了使用XNA,但是由于我想从事游戏工作,所以我想知道是否有办法在Visual Studio 2012上使用C#开发游戏。 ,还是我应该再次使用C ++和Direct3D学习一切? C#是我非常喜欢的一种语言,因此,如果没有办法用C#来实现,但是如果使用Java来进行游戏开发就非常容易,我也会对此感兴趣。 非常感谢!
10 xna  c#  3d  directx  .net 

3
将DX10 / 11用于2D游戏有什么优势吗?
我对DX10 / 11类硬件引入的功能集并不完全熟悉。我对熟悉的可编程图形管线中添加的新阶段(例如几何体着色器,计算着色器和新的细分阶段)非常熟悉。我看不出这些对2D游戏有什么影响。 是否有任何令人信服的理由将2D游戏切换到DX10 / 11(或OpenGL等价物),或者考虑到市场的很大份额仍然依靠较旧的技术(例如, 2012年2月Steam调查显示约有17%的用户仍在使用Windows XP)?
10 2d  graphics  directx 

3
从DirectX 10移至DirectX 11
我已经使用DirectX 9完成了大量的小型业余项目,但是现在该迁移到DirectX 11了。 我有一本关于使用DirectX 10进行3D编程的书,但对于DirectX 11却一无所知。我相信它们非常相似,但是我想知道是否有人可以枚举我需要意识到的代码级的主要区别(或指向现有来源)。
10 directx 


1
2D水顶面轮廓
我正在尝试使用顶点片段着色器创建水表面厚度的效果。 我在3D游戏环境中,但是它是滚动视图,所以是“ 2D”视图。 这是一个使用片段着色器在真实2D中创建这种效果的很好的教程。 但是我认为这不能用于我的情况。目前,我只有一架飞机要折射。 我想应用水厚效果。但是我不知道该怎么做。 我暂时不尝试使用顶点创建一些水变形/位移,这不是重点。 我不知道是否可以使用简单的四边形,也许我应该使用这样的对象。 这里有些例子。 我对如何产生这种效果一无所知。 非常感谢 ! [ 编辑 ]添加了雷曼水效果以更好地参考效果。

2
D3D / DXGI处理全屏过渡
我有一个D3D11应用程序,我想添加适当的全屏支持。现在,我可以让DXGI为我将窗口切换到全屏状态,并且给人的印象是DXGI会处理使交换链翻转前后缓冲所需的一切,而不是消隐它们。 但是,在多监视器设置中,让DXGI执行切换似乎不可靠-切换大量时间后,辅助屏幕完全保持黑色,没有明显的原因或模式。 它可以采取几次来回切换之前,我全屏窗口和桌面的其余部分显示的其他屏幕上。 显然我并不孤单,《战地风云3》和《魔兽世界》似乎对很多人都有类似的问题。 现在,真正的问题是:我猜想,即使是那些AAA游戏开发公司也无法做到这一点,所以我最大的希望是自己以某种方式执行全屏切换。 我有什么办法可以将窗口/交换链提升为适当的,缓冲区翻转的全屏模式?

3
Windows 8仍然支持DirectX 9吗?
Windows 8是否支持DirectX 9?因为我正在浏览一些用C ++和DirectX 9编写的Windows 8样例。不是那样,就像我知道的那样(请看这里http://directxtutorial.com/Lesson.aspx?lessonid=111-4-2)。例如,使用COM简化DirectX: ComPtr<ID3D11Device1> dev; ComPtr<ID3D11DeviceContext1> devcon; 这很奇怪,因为我以旧的方式知道它: ID3D11Device *dev; ID3D11DeviceContext *devcon; (我希望你明白我想说的) 我希望它不会因为发布了新的操作系统而完全改变。
9 c++  directx  windows 

1
gluLookAt如何工作?
据我了解, gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); 等效于: glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); 但是当我打印出ModelView矩阵时,对的调用glTranslatef()似乎无法正常工作。这是代码片段: #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int Ry …

2
处理场景中的许多灯光(带有着色器)
我很好奇如何处理场景中的许多灯光。给定角色扮演游戏中非常大的地图,其中包括地牢(其中有灯光)等。我知道延迟照明,但这只能回答如何渲染许多灯光。但是我的问题更多:如何不渲染很多灯光。仅渲染影响场景的灯光显然是可取的,但是我不知道将其存档的技术/算法。没有人希望甚至能够渲染500个点光源,仅仅是因为地图上的某个地方。但是,人们不能只是从灯光到玩家的直线,并测试两者之间是否有直线。距离似乎也不是一个好的指标。(阳光?) tl; dr:如何找出仅影响渲染的灯光会影响场景?

1
如何实现高级图形效果?
我很好奇如何以图形方式实现《魔兽争霸》或《火炬之光》等3D效果。我刚读完一本关于Direct3D的书,总体上对它和3D图形感到很满意,但是我不确定如何做一个像“铸一个闪电”或图形化其他咒语那样的事情。我认为这与粒子效果或动画的纹理坐标有关,有人能给我一些更具体的见解吗?谢谢

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.