void device_load_pixelshader(device_t device, shader_t pixelshader) { GLuint program = 0; if (device->cur_pixel_shader == pixelshader) return; if (pixelshader && pixelshader->type != SHADER_PIXEL) { blog(LOG_ERROR, "Specified shader is not a pixel shader"); goto fail; } device->cur_pixel_shader = pixelshader; if (pixelshader) program = pixelshader->program; glUseProgramStages(device->pipeline, GL_FRAGMENT_SHADER_BIT, program); if (!gl_success("glUseProgramStages")) goto fail; clear_textures(device); if (pixelshader) load_default_pixelshader_samplers(device, pixelshader); return; fail: blog(LOG_ERROR, "device_load_pixelshader (GL) failed"); }
void device_load_pixelshader(device_t device, shader_t pixelshader) { ID3D11PixelShader *shader = NULL; ID3D11Buffer *constants = NULL; ID3D11SamplerState *states[GS_MAX_TEXTURES]; if (device->curPixelShader == pixelshader) return; gs_pixel_shader *ps = static_cast<gs_pixel_shader*>(pixelshader); if (pixelshader) { if (pixelshader->type != SHADER_PIXEL) { blog(LOG_ERROR, "device_load_pixelshader (D3D11): " "Specified shader is not a pixel " "shader"); return; } shader = ps->shader; constants = ps->constants; ps->GetSamplerStates(states); } else { memset(states, 0, sizeof(states)); } clear_textures(device); device->curPixelShader = ps; device->context->PSSetShader(shader, NULL, 0); device->context->PSSetConstantBuffers(0, 1, &constants); device->context->PSSetSamplers(0, GS_MAX_TEXTURES, states); }
void device_load_pixelshader(gs_device_t *device, gs_shader_t *pixelshader) { if (device->cur_pixel_shader == pixelshader) return; if (pixelshader && pixelshader->type != GS_SHADER_PIXEL) { blog(LOG_ERROR, "Specified shader is not a pixel shader"); goto fail; } device->cur_pixel_shader = pixelshader; clear_textures(device); if (pixelshader) load_default_pixelshader_samplers(device, pixelshader); return; fail: blog(LOG_ERROR, "device_load_pixelshader (GL) failed"); }
void device_beginscene(device_t device) { clear_textures(device); }
void device_begin_scene(gs_device_t device) { clear_textures(device); }