mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-31 10:09:36 -06:00
Merge pull request #1716 from Armada651/geom-wireframe
VideoCommon: Handle wireframe mode in the geometry shader.
This commit is contained in:
@ -407,7 +407,7 @@ ID3D11RasterizerState* StateCache::Get(RasterizerState state)
|
||||
if (it != m_raster.end())
|
||||
return it->second;
|
||||
|
||||
D3D11_RASTERIZER_DESC rastdc = CD3D11_RASTERIZER_DESC(state.wireframe ? D3D11_FILL_WIREFRAME : D3D11_FILL_SOLID,
|
||||
D3D11_RASTERIZER_DESC rastdc = CD3D11_RASTERIZER_DESC(D3D11_FILL_SOLID,
|
||||
state.cull_mode,
|
||||
false, 0, 0.f, 0, true, true, false, false);
|
||||
|
||||
|
@ -22,7 +22,6 @@ namespace DX11
|
||||
union RasterizerState
|
||||
{
|
||||
BitField<0, 2, D3D11_CULL_MODE> cull_mode;
|
||||
BitField<2, 1, u32> wireframe;
|
||||
|
||||
u32 packed;
|
||||
};
|
||||
|
@ -211,7 +211,7 @@ bool GeometryShaderCache::SetShader(u32 primitive_type)
|
||||
last_uid = uid;
|
||||
|
||||
// Check if the shader is a pass-through shader
|
||||
if (IsPassthroughGeometryShader(uid))
|
||||
if (uid.GetUidData()->IsPassthrough())
|
||||
{
|
||||
// Return the default pass-through shader
|
||||
last_entry = &pass_entry;
|
||||
|
@ -255,7 +255,6 @@ Renderer::Renderer(void *&window_handle)
|
||||
gx_state.zmode.func = ZMode::NEVER;
|
||||
|
||||
gx_state.raster.cull_mode = D3D11_CULL_NONE;
|
||||
gx_state.raster.wireframe = false;
|
||||
|
||||
// Clear EFB textures
|
||||
float ClearColor[4] = { 0.f, 0.f, 0.f, 1.f };
|
||||
@ -1084,10 +1083,7 @@ void Renderer::ApplyState(bool bUseDstAlpha)
|
||||
{
|
||||
gx_state.blend.use_dst_alpha = bUseDstAlpha;
|
||||
D3D::stateman->PushBlendState(gx_state_cache.Get(gx_state.blend));
|
||||
|
||||
D3D::stateman->PushDepthState(gx_state_cache.Get(gx_state.zmode));
|
||||
|
||||
gx_state.raster.wireframe = g_ActiveConfig.bWireFrame;
|
||||
D3D::stateman->PushRasterizerState(gx_state_cache.Get(gx_state.raster));
|
||||
|
||||
for (unsigned int stage = 0; stage < 8; stage++)
|
||||
|
@ -211,7 +211,7 @@ SHADER* ProgramShaderCache::SetShader(DSTALPHA_MODE dstAlphaMode, u32 components
|
||||
ShaderCode gcode;
|
||||
GenerateVertexShaderCode(vcode, components, API_OPENGL);
|
||||
GeneratePixelShaderCode(pcode, dstAlphaMode, API_OPENGL, components);
|
||||
if (g_ActiveConfig.backend_info.bSupportsGeometryShaders && !IsPassthroughGeometryShader(uid.guid))
|
||||
if (g_ActiveConfig.backend_info.bSupportsGeometryShaders && !uid.guid.GetUidData()->IsPassthrough())
|
||||
GenerateGeometryShaderCode(gcode, primitive_type, API_OPENGL);
|
||||
|
||||
if (g_ActiveConfig.bEnableShaderDebugging)
|
||||
|
@ -1790,9 +1790,6 @@ void Renderer::RestoreAPIState()
|
||||
SetLogicOpMode();
|
||||
SetViewport();
|
||||
|
||||
if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGL)
|
||||
glPolygonMode(GL_FRONT_AND_BACK, g_ActiveConfig.bWireFrame ? GL_LINE : GL_FILL);
|
||||
|
||||
VertexManager *vm = (OGL::VertexManager*)g_vertex_manager;
|
||||
glBindBuffer(GL_ARRAY_BUFFER, vm->m_vertex_buffers);
|
||||
if (vm->m_last_vao)
|
||||
|
Reference in New Issue
Block a user