Questions tagged «directx9»

5
游戏中的演员应该负责吸引自己吗?
我对游戏开发非常陌生,但对编程却不是。 我(再次)使用JavaScript的canvas元素在玩Pong类型的游戏。 我创建了一个Paddle具有以下属性的对象... width height x y colour 我也有一个Pong具有诸如...的属性的对象 width height backgroundColour draw()。 该draw()方法当前正在重置canvas,这就是出现问题的地方。 如果Paddle对象具有draw()负责其绘制的方法,或者draw()该Pong对象的负责负责其演员的绘制(我认为这是正确的术语,如果我不正确,请更正我)。 我发现在Paddle实例化两个对象Player和时,绘制自身会很有利Enemy。如果在没有Pong的draw(),我需要两次写类似的代码。 最佳做法是什么? 谢谢。

4
使用全屏四边形对渲染目标进行完美像素渲染
将一堆值渲染到rendertarget时遇到一些麻烦。这些值永远不会在我想要它们的确切范围内。基本上,我使用全屏四边形和像素着色器渲染到我的rendertarget纹理,然后打算将纹理坐标用作着色器中某些计算的基础。四边形的纹理坐标范围从左上角的(0,0)到右下角的(1,1)...问题是,插值后,这些值没有像这样到达像素着色器。 一个示例: 我渲染为4x4纹理,在这种情况下,着色器仅在红色和绿色通道中输出纹理坐标(u,v): return float4(texCoord.rg, 0, 1); 我要摆脱的是一种纹理,其中左上角的像素是RGB(0,0,0),因此是黑色,右上角的像素是RGB(255,0,0),因此是明亮的红色,左下角的像素为RGB(0,255,0)-亮绿色。 但是,相反,我在这里得到此: (直四边形渲染,无校正) 左上方的像素是黑色,但在其他角落我只能得到相对深红色和深绿色。它们的RGB值为(191,0,0)和(0,191,0)。我强烈怀疑它与四边形的采样位置有关:左上像素正确地对四边形的左上角进行采样,并获得(0,0)作为UV坐标,但其他角点像素未从中采样四边形的其他角。我已经在左图中说明了这一点,蓝色框代表四边形,白色点代表上采样坐标。 现在,我知道在Direct3D9中渲染屏幕对齐的四边形时应将半像素偏移应用于坐标。让我们看看我从中得到什么样的结果: (以DX9的半像素偏移量渲染的四进制) 红色和绿色变亮,但仍然不正确:223是我在红色或绿色通道上获得的最大值。但是现在,我什至没有纯黑色,而是带有RGB(32,32,0)的深黄灰色! 我真正需要的是这种渲染: (目标渲染,减小的四边形尺寸) 与第一个图形相比,看起来我必须将四边形的右边界和底边界恰好向左移动一个像素。然后,像素的右列和底行都应正确地从四边形的边界正确获取UV坐标: VertexPositionTexture[] quad = new VertexPositionTexture[] { new VertexPositionTexture(new Vector3(-1.0f, 1.0f, 1f), new Vector2(0,0)), new VertexPositionTexture(new Vector3(1.0f - pixelSize.X, 1.0f, 1f), new Vector2(1,0)), new VertexPositionTexture(new Vector3(-1.0f, -1.0f + pixelSize.Y, 1f), new Vector2(0,1)), new VertexPositionTexture(new …

4
在基于二维图块的游戏中,滚动的好方法是什么?
我将D3DXSPRITE包装器与Direct3D配合使用,将图块绘制到屏幕上。我有一个图块类,其中包含诸如碰撞和图块类型的成员,然后我有一个图块数组,例如 平铺网格[256] [256]; 哪种方法更好? -将播放器绘制在屏幕中央,并在地图绘制位置偏移。 -使用以下摄像机移动播放器。 我使用的是第一种方法,但是当您到达地图的左上边缘以及其他玩家/敌人同时在地图上移动时,它变得非常复杂 如果我让摄像机跟随播放器,即使屏幕上只能容纳几个网格块,我是否也必须为每个单个网格块调用spriteBatch-> Draw(...)?
9 c++  directx  directx9 
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.