Browse Source

mac-capture: Use obs_get_default_rect_effect

Palana 11 years ago
parent
commit
802ae79601

+ 0 - 35
plugins/mac-capture/data/draw_rect.effect

@@ -1,35 +0,0 @@
-uniform float4x4 ViewProj;
-uniform texture_rect diffuse;
-
-sampler_state texSampler {
-	AddressU  = Clamp;
-	AddressV  = Clamp;
-	Filter    = Linear;
-};
-
-struct VertexInOut {
-	float4 pos : POSITION;
-	float2 uv  : TEXCOORD0;
-};
-
-VertexInOut VShader(VertexInOut vert_in)
-{
-	VertexInOut vert_out;
-	vert_out.pos = mul(float4(vert_in.pos.xyz, 1.0), ViewProj);
-	vert_out.uv = vert_in.uv;
-	return vert_out;
-}
-
-float4 PShader(VertexInOut fragment_in) : TARGET
-{
-	return diffuse.Sample(texSampler, fragment_in.uv);
-}
-
-technique Default
-{
-	pass
-	{
-		vertex_shader = VShader(vert_in);
-		pixel_shader  = PShader(fragment_in);
-	}
-}

+ 6 - 10
plugins/mac-capture/mac-display-capture.m

@@ -104,8 +104,6 @@ static void display_capture_destroy(void *data)
 
 	if (dc->sampler)
 		gs_samplerstate_destroy(dc->sampler);
-	if (dc->effect)
-		gs_effect_destroy(dc->effect);
 	if (dc->vertbuf)
 		gs_vertexbuffer_destroy(dc->vertbuf);
 
@@ -261,6 +259,10 @@ static void *display_capture_create(obs_data_t *settings,
 
 	dc->source = source;
 
+	dc->effect = obs_get_default_rect_effect();
+	if (!dc->effect)
+		goto fail;
+
 	obs_enter_graphics();
 
 	struct gs_sampler_info info = {
@@ -274,12 +276,6 @@ static void *display_capture_create(obs_data_t *settings,
 	if (!dc->sampler)
 		goto fail;
 
-	char *effect_file = obs_module_file("draw_rect.effect");
-	dc->effect = gs_effect_create_from_file(effect_file, NULL);
-	bfree(effect_file);
-	if (!dc->effect)
-		goto fail;
-
 	if (!init_vertbuf(dc))
 		goto fail;
 
@@ -408,8 +404,8 @@ static void display_capture_video_render(void *data, gs_effect_t *effect)
 	gs_load_vertexbuffer(dc->vertbuf);
 	gs_load_indexbuffer(NULL);
 	gs_load_samplerstate(dc->sampler, 0);
-	gs_technique_t *tech = gs_effect_get_technique(dc->effect, "Default");
-	gs_effect_set_texture(gs_effect_get_param_by_idx(dc->effect, 1),
+	gs_technique_t *tech = gs_effect_get_technique(dc->effect, "Draw");
+	gs_effect_set_texture(gs_effect_get_param_by_name(dc->effect, "image"),
 			dc->tex);
 	gs_technique_begin(tech);
 	gs_technique_begin_pass(tech, 0);