change names, fix some bugs, minor GL/D3D fixes, update tests, fix effect files, output a little more debug information
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
#include "test-filter.h"
|
||||
|
||||
struct test_filter *test_create(const char *settings, source_t source)
|
||||
struct test_filter *test_create(const char *settings, obs_source_t source)
|
||||
{
|
||||
struct test_filter *tf = bmalloc(sizeof(struct test_filter));
|
||||
memset(tf, 0, sizeof(struct test_filter));
|
||||
|
||||
gs_entercontext(obs_graphics());
|
||||
|
||||
tf->source = source;
|
||||
tf->whatever = gs_create_effect_from_file("test.effect", NULL);
|
||||
if (!tf->whatever) {
|
||||
@@ -14,15 +16,21 @@ struct test_filter *test_create(const char *settings, source_t source)
|
||||
|
||||
tf->texrender = texrender_create(GS_RGBA, GS_ZS_NONE);
|
||||
|
||||
gs_leavecontext();
|
||||
|
||||
return tf;
|
||||
}
|
||||
|
||||
void test_destroy(struct test_filter *tf)
|
||||
{
|
||||
if (tf) {
|
||||
gs_entercontext(obs_graphics());
|
||||
|
||||
effect_destroy(tf->whatever);
|
||||
texrender_destroy(tf->texrender);
|
||||
bfree(tf);
|
||||
|
||||
gs_leavecontext();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,9 +46,9 @@ void test_video_tick(struct test_filter *tf, float seconds)
|
||||
|
||||
void test_video_render(struct test_filter *tf)
|
||||
{
|
||||
source_t filter_target = filter_gettarget(tf->source);
|
||||
int cx = source_getwidth(filter_target);
|
||||
int cy = source_getheight(filter_target);
|
||||
obs_source_t filter_target = obs_filter_gettarget(tf->source);
|
||||
int cx = obs_source_getwidth(filter_target);
|
||||
int cy = obs_source_getheight(filter_target);
|
||||
float fcx = (float)cx;
|
||||
float fcy = (float)cy;
|
||||
technique_t tech;
|
||||
@@ -48,7 +56,7 @@ void test_video_render(struct test_filter *tf)
|
||||
|
||||
if (texrender_begin(tf->texrender, cx, cy)) {
|
||||
gs_ortho(0.0f, fcx, 0.0f, fcy, -100.0f, 100.0f);
|
||||
source_video_render(filter_target);
|
||||
obs_source_video_render(filter_target);
|
||||
texrender_end(tf->texrender);
|
||||
}
|
||||
|
||||
|
@@ -7,12 +7,12 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
struct test_filter {
|
||||
source_t source;
|
||||
obs_source_t source;
|
||||
effect_t whatever;
|
||||
texrender_t texrender;
|
||||
};
|
||||
|
||||
EXPORT struct test_filter *test_create(const char *settings, source_t source);
|
||||
EXPORT struct test_filter *test_create(const char *settings, obs_source_t source);
|
||||
EXPORT void test_destroy(struct test_filter *rt);
|
||||
EXPORT uint32_t test_get_output_flags(struct test_filter *rt);
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
#include <stdlib.h>
|
||||
#include "test-random.h"
|
||||
|
||||
struct random_tex *random_create(const char *settings, source_t source)
|
||||
struct random_tex *random_create(const char *settings, obs_source_t source)
|
||||
{
|
||||
struct random_tex *rt = bmalloc(sizeof(struct random_tex));
|
||||
uint32_t *pixels = bmalloc(20*20*4);
|
||||
@@ -19,6 +19,8 @@ struct random_tex *random_create(const char *settings, source_t source)
|
||||
}
|
||||
}
|
||||
|
||||
gs_entercontext(obs_graphics());
|
||||
|
||||
rt->texture = gs_create_texture(20, 20, GS_RGBA, 1, &pixels, 0);
|
||||
bfree(pixels);
|
||||
|
||||
@@ -33,15 +35,21 @@ struct random_tex *random_create(const char *settings, source_t source)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gs_leavecontext();
|
||||
|
||||
return rt;
|
||||
}
|
||||
|
||||
void random_destroy(struct random_tex *rt)
|
||||
{
|
||||
if (rt) {
|
||||
gs_entercontext(obs_graphics());
|
||||
|
||||
effect_destroy(rt->whatever);
|
||||
texture_destroy(rt->texture);
|
||||
bfree(rt);
|
||||
|
||||
gs_leavecontext();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +58,7 @@ uint32_t random_get_output_flags(struct random_tex *rt)
|
||||
return SOURCE_VIDEO;
|
||||
}
|
||||
|
||||
void random_video_render(struct random_tex *rt, source_t filter_target)
|
||||
void random_video_render(struct random_tex *rt, obs_source_t filter_target)
|
||||
{
|
||||
technique_t tech = effect_gettechnique(rt->whatever, "Default");
|
||||
effect_settexture(rt->whatever, effect_getparambyidx(rt->whatever, 1), rt->texture);
|
||||
|
@@ -11,11 +11,11 @@ struct random_tex {
|
||||
effect_t whatever;
|
||||
};
|
||||
|
||||
EXPORT struct random_tex *random_create(const char *settings, source_t source);
|
||||
EXPORT struct random_tex *random_create(const char *settings, obs_source_t source);
|
||||
EXPORT void random_destroy(struct random_tex *rt);
|
||||
EXPORT uint32_t random_get_output_flags(struct random_tex *rt);
|
||||
|
||||
EXPORT void random_video_render(struct random_tex *rt, source_t filter_target);
|
||||
EXPORT void random_video_render(struct random_tex *rt, obs_source_t filter_target);
|
||||
|
||||
EXPORT int random_getwidth(struct random_tex *rt);
|
||||
EXPORT int random_getheight(struct random_tex *rt);
|
||||
|
Reference in New Issue
Block a user