فهرست منبع

libobs-opengl: Add int2-4 support

Closes obsproject/obs-studio#1506
Alex Anderson 7 سال پیش
والد
کامیت
4eac034814
1فایلهای تغییر یافته به همراه21 افزوده شده و 0 حذف شده
  1. 21 0
      libobs-opengl/gl-shader.c

+ 21 - 0
libobs-opengl/gl-shader.c

@@ -455,6 +455,24 @@ static void program_set_param_data(struct gs_program *program,
 			gl_success("glUniform1iv");
 			gl_success("glUniform1iv");
 		}
 		}
 
 
+	} else if (pp->param->type == GS_SHADER_PARAM_INT2) {
+		if (validate_param(pp, sizeof(int) * 2)) {
+			glUniform2iv(pp->obj, 1, (int*)array);
+			gl_success("glUniform2iv");
+		}
+
+	} else if (pp->param->type == GS_SHADER_PARAM_INT3) {
+		if (validate_param(pp, sizeof(int) * 3)) {
+			glUniform3iv(pp->obj, 1, (int*)array);
+			gl_success("glUniform3iv");
+		}
+
+	} else if (pp->param->type == GS_SHADER_PARAM_INT4) {
+		if (validate_param(pp, sizeof(int) * 4)) {
+			glUniform4iv(pp->obj, 1, (int*)array);
+			gl_success("glUniform4iv");
+		}
+
 	} else if (pp->param->type == GS_SHADER_PARAM_FLOAT) {
 	} else if (pp->param->type == GS_SHADER_PARAM_FLOAT) {
 		if (validate_param(pp, sizeof(float))) {
 		if (validate_param(pp, sizeof(float))) {
 			glUniform1fv(pp->obj, 1, (float*)array);
 			glUniform1fv(pp->obj, 1, (float*)array);
@@ -698,6 +716,9 @@ void gs_shader_set_val(gs_sparam_t *param, const void *val, size_t size)
 	case GS_SHADER_PARAM_FLOAT:     expected_size = sizeof(float); break;
 	case GS_SHADER_PARAM_FLOAT:     expected_size = sizeof(float); break;
 	case GS_SHADER_PARAM_BOOL:
 	case GS_SHADER_PARAM_BOOL:
 	case GS_SHADER_PARAM_INT:       expected_size = sizeof(int); break;
 	case GS_SHADER_PARAM_INT:       expected_size = sizeof(int); break;
+	case GS_SHADER_PARAM_INT2:	expected_size = sizeof(int) * 2; break;
+	case GS_SHADER_PARAM_INT3:	expected_size = sizeof(int) * 3; break;
+	case GS_SHADER_PARAM_INT4:	expected_size = sizeof(int) * 4; break;
 	case GS_SHADER_PARAM_VEC2:      expected_size = sizeof(float)*2; break;
 	case GS_SHADER_PARAM_VEC2:      expected_size = sizeof(float)*2; break;
 	case GS_SHADER_PARAM_VEC3:      expected_size = sizeof(float)*3; break;
 	case GS_SHADER_PARAM_VEC3:      expected_size = sizeof(float)*3; break;
 	case GS_SHADER_PARAM_VEC4:      expected_size = sizeof(float)*4; break;
 	case GS_SHADER_PARAM_VEC4:      expected_size = sizeof(float)*4; break;