On Fri, 17 May 2019 at 13:22, Paul Gofman gofmanp@gmail.com wrote:
+static void wined3d_format_get_color(const struct wined3d_format *format, const BYTE *data,
struct wined3d_color *color)+{
Thinking about it a bit more, perhaps the the long term direction we want this to go is something like "wined3d_format_get_vec4()", instead of making this specific to colours. No rush though, it would be fine to wait with that until it's actually needed.
case WINED3DFMT_R32_FLOAT:case WINED3DFMT_R32G32_FLOAT:case WINED3DFMT_R32G32B32_FLOAT:case WINED3DFMT_R32G32B32A32_FLOAT:{const float *float_data = (const float *)data;for (i = 0; i < format->component_count; ++i)output[i] = float_data[i];break;}
Note that you leave the "implicit" components uninitialised in this case, while you do initialise them for the other formats.
- if (lighting)
- {
if (state->render_states[WINED3D_RS_COLORVERTEX]){diffuse_source = validate_material_colour_source(stream_info->use_map,state->render_states[WINED3D_RS_DIFFUSEMATERIALSOURCE]);specular_source = validate_material_colour_source(stream_info->use_map,state->render_states[WINED3D_RS_SPECULARMATERIALSOURCE]);}else{diffuse_source = specular_source = WINED3D_MCS_MATERIAL;}- }
- else
- {
diffuse_source = WINED3D_MCS_COLOR1;specular_source = WINED3D_MCS_COLOR2;- }
In case it helps, wined3d_ffp_get_vs_settings() already does something very similar, perhaps it makes sense to start from the wined3d_ffp_vs_settings structure, instead of the raw state.