More error handling in CDirect3D.cs
This commit is contained in:
1 parent
f31fdd4668
commit
bdf02e6525
1 file changed
+14
-9
@@ -422,8 +422,6 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
Matrix projection = Matrix.OrthoOffCenterLH(-CSettings.iRenderW / 2, CSettings.iRenderW / 2, -CSettings.iRenderH / 2, CSettings.iRenderH / 2, CSettings.zNear, CSettings.zFar);
|
Matrix projection = Matrix.OrthoOffCenterLH(-CSettings.iRenderW / 2, CSettings.iRenderW / 2, -CSettings.iRenderH / 2, CSettings.iRenderH / 2, CSettings.zNear, CSettings.zFar);
|
||||||
_VertexBuffer = new VertexBuffer(_Device, CSettings.iVertexBufferElements * (4 * Marshal.SizeOf(typeof(TexturedColoredVertex))), Usage.WriteOnly | Usage.Dynamic, VertexFormat.Position | VertexFormat.Texture1 | VertexFormat.Diffuse, Pool.Default);
|
_VertexBuffer = new VertexBuffer(_Device, CSettings.iVertexBufferElements * (4 * Marshal.SizeOf(typeof(TexturedColoredVertex))), Usage.WriteOnly | Usage.Dynamic, VertexFormat.Position | VertexFormat.Texture1 | VertexFormat.Diffuse, Pool.Default);
|
||||||
|
|
||||||
Capabilities caps = _D3D.GetDeviceCaps(_D3D.Adapters.DefaultAdapter.Adapter, DeviceType.Hardware);
|
|
||||||
|
|
||||||
if (_Device.SetStreamSource(0, _VertexBuffer, 0, Marshal.SizeOf(typeof(TexturedColoredVertex))).IsFailure)
|
if (_Device.SetStreamSource(0, _VertexBuffer, 0, Marshal.SizeOf(typeof(TexturedColoredVertex))).IsFailure)
|
||||||
CLog.LogError("Failed to set stream source");
|
CLog.LogError("Failed to set stream source");
|
||||||
_Device.VertexDeclaration = TexturedColoredVertex.GetDeclaration(_Device);
|
_Device.VertexDeclaration = TexturedColoredVertex.GetDeclaration(_Device);
|
||||||
@@ -516,12 +514,14 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
//Clear the previous Frame
|
//Clear the previous Frame
|
||||||
ClearScreen();
|
ClearScreen();
|
||||||
//We want to begin drawing
|
//We want to begin drawing
|
||||||
_Device.BeginScene();
|
if (_Device.BeginScene().IsFailure)
|
||||||
|
CLog.LogError("Failed to begin scene");
|
||||||
CheckQueque();
|
CheckQueque();
|
||||||
_Run = _Run && CGraphics.Draw();
|
_Run = _Run && CGraphics.Draw();
|
||||||
RenderVertexBuffer();
|
RenderVertexBuffer();
|
||||||
//We finished drawing the frame
|
//We finished drawing the frame
|
||||||
_Device.EndScene();
|
if (_Device.EndScene().IsFailure)
|
||||||
|
CLog.LogError("Failed to end scene");
|
||||||
_Run = CGraphics.UpdateGameLogic(_Keys, _Mouse);
|
_Run = CGraphics.UpdateGameLogic(_Keys, _Mouse);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -571,7 +571,8 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
TexturedColoredVertex.GetDeclaration(_Device).Dispose();
|
TexturedColoredVertex.GetDeclaration(_Device).Dispose();
|
||||||
_VertexBuffer.Dispose();
|
_VertexBuffer.Dispose();
|
||||||
_IndexBuffer.Dispose();
|
_IndexBuffer.Dispose();
|
||||||
_Device.Reset(_PresentParameters);
|
if (_Device.Reset(_PresentParameters).IsFailure)
|
||||||
|
CLog.LogError("Failed to reset the device");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -671,11 +672,14 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
for (int i = 0; i < _Vertices.Count; i += 4)
|
for (int i = 0; i < _Vertices.Count; i += 4)
|
||||||
{
|
{
|
||||||
//Apply rotation
|
//Apply rotation
|
||||||
_Device.SetTransform(TransformState.World, _VerticesRotationMatrices.Dequeue());
|
if (_Device.SetTransform(TransformState.World, _VerticesRotationMatrices.Dequeue()).IsFailure)
|
||||||
|
CLog.LogError("Failed to set world transformation");
|
||||||
//Apply texture
|
//Apply texture
|
||||||
_Device.SetTexture(0, _VerticesTextures.Dequeue());
|
if (_Device.SetTexture(0, _VerticesTextures.Dequeue()).IsFailure)
|
||||||
|
CLog.LogError("Failed to set texture");
|
||||||
//Draw 2 triangles from vertexbuffer
|
//Draw 2 triangles from vertexbuffer
|
||||||
_Device.DrawIndexedPrimitives(PrimitiveType.TriangleList, i, 0, 4, 0, 2);
|
if (_Device.DrawIndexedPrimitives(PrimitiveType.TriangleList, i, 0, 4, 0, 2).IsFailure)
|
||||||
|
CLog.LogError("Failed to draw quad");
|
||||||
}
|
}
|
||||||
//Clear the queues for the next frame
|
//Clear the queues for the next frame
|
||||||
_Vertices.Clear();
|
_Vertices.Clear();
|
||||||
@@ -692,7 +696,8 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void ClearScreen()
|
public void ClearScreen()
|
||||||
{
|
{
|
||||||
_Device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0);
|
if (_Device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Black, 1.0f, 0).IsFailure)
|
||||||
|
CLog.LogError("Failed to clear the backbuffer");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
Reference in new issue
Block a user