Я хочу нарисовать куб в SharpDX. И это мой текущий результат:
Как видите, в какой-то момент части куба обрезаются.
Я не знаю, что за настройка неправильная, что это может быть? Мне кажется, что-то не так с перспективой. Я пытался создать вид в перспективе, но у меня не было другого результата, кроме пустого окна.
Вот мой код:
struct Vertex
{
public Vector4 position;
public Color4 color;
//...
}
SharpDX.Direct3D11.Buffer vertexBuffer;
SharpDX.Direct3D11.Buffer projBuffer;
Matrix projMatrix;
Vertex[] vertices;
В этом:
//...
BufferDescription description = new BufferDescription(sizeof(float) * 8 * vertices.Length, ResourceUsage.Dynamic, BindFlags.VertexBuffer, CpuAccessFlags.Write, ResourceOptionFlags.None, 0);
vertexBuffer = SharpDX.Direct3D11.Buffer.Create(Device, vertices, description);
//To pass projection matrix to shader
projBuffer = new SharpDX.Direct3D11.Buffer(Device, Matrix.SizeInBytes, ResourceUsage.Default, BindFlags.ConstantBuffer, CpuAccessFlags.None, ResourceOptionFlags.None, 0);
DeviceContext.VertexShader.SetConstantBuffer(1, projBuffer);
Обновлять:
projMatrix = Matrix.OrthoOffCenterLH(-10, 10, -screenRatio*10, screenRatio*10, 1f, 100f);
//How can i create a perspective view?
//projMatrix = Matrix.PerspectiveFovLH(1f, (float)width/height, 1f, 100f);
projMatrix *= Matrix.Rotation...
DeviceContext.UpdateSubresource(ref projMatrix, projBuffer);
Шейдер:
struct VOut
{
float4 position : SV_POSITION;
float4 color : COLOR;
};
cbuffer meshBuffer : register(b1)
{
float4x4 projMatrix;
}
VOut VShader(float4 position : POSITION, float4 color : COLOR)
{
VOut output;
output.position = mul(position, projMatrix);
output.color = color;
return output;
}
float4 PShader(float4 position : SV_POSITION, float4 color : COLOR) : SV_TARGET
{
return color;
}
Что случилось?
IsDepthClipEnabled = true
в моемRasterizerStateDescription
. Я отключил его, и теперь он работает :) У вас также есть предположения, почему я не могу получить вид в перспективе? - person fedab   schedule 19.05.2014