|
|
@ -107,8 +107,6 @@ GLuint initShader(const char* vShader, const char* fShader, const char* outputAt |
|
|
|
void loadShader(){ |
|
|
|
void loadShader(){ |
|
|
|
#ifndef __EMSCRIPTEN__ |
|
|
|
#ifndef __EMSCRIPTEN__ |
|
|
|
const char * vert = R"(#version 150 |
|
|
|
const char * vert = R"(#version 150 |
|
|
|
uniform vec2 offset; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
in vec4 position; |
|
|
|
in vec4 position; |
|
|
|
in vec4 color; |
|
|
|
in vec4 color; |
|
|
|
|
|
|
|
|
|
|
@ -121,8 +119,6 @@ void loadShader(){ |
|
|
|
})"; |
|
|
|
})"; |
|
|
|
#else |
|
|
|
#else |
|
|
|
const char * vert = R"(#version 100 |
|
|
|
const char * vert = R"(#version 100 |
|
|
|
uniform vec2 offset; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
attribute vec4 position; |
|
|
|
attribute vec4 position; |
|
|
|
attribute vec4 color; |
|
|
|
attribute vec4 color; |
|
|
|
|
|
|
|
|
|
|
@ -179,7 +175,6 @@ void render_scene(const cv::Size& sz) { |
|
|
|
glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT ); |
|
|
|
glClear( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT ); |
|
|
|
|
|
|
|
|
|
|
|
glUseProgram(shaderProgram); |
|
|
|
glUseProgram(shaderProgram); |
|
|
|
glUniform2f(glGetUniformLocation(shaderProgram, "offset"), -0.5, -0.5); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
glDrawArrays(GL_TRIANGLE_FAN, 0, 4); |
|
|
|
glDrawArrays(GL_TRIANGLE_FAN, 0, 4); |
|
|
|
} |
|
|
|
} |
|
|
@ -209,16 +204,21 @@ void glow_effect(const cv::UMat &src, cv::UMat &dst, const int ksize) { |
|
|
|
cv::Ptr<kb::viz2d::Viz2D> v2d = new kb::viz2d::Viz2D(cv::Size(WIDTH, HEIGHT), cv::Size(WIDTH, HEIGHT), OFFSCREEN, "Tetra Demo"); |
|
|
|
cv::Ptr<kb::viz2d::Viz2D> v2d = new kb::viz2d::Viz2D(cv::Size(WIDTH, HEIGHT), cv::Size(WIDTH, HEIGHT), OFFSCREEN, "Tetra Demo"); |
|
|
|
|
|
|
|
|
|
|
|
void iteration() { |
|
|
|
void iteration() { |
|
|
|
|
|
|
|
//Reinitialize the scene on every frame because nvg interfers
|
|
|
|
|
|
|
|
v2d->gl(init_scene); |
|
|
|
|
|
|
|
|
|
|
|
//Render using OpenGL
|
|
|
|
//Render using OpenGL
|
|
|
|
v2d->gl(render_scene); |
|
|
|
v2d->gl(render_scene); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//To slow for wasm
|
|
|
|
|
|
|
|
#ifndef __EMSCRIPTEN__ |
|
|
|
//Aquire the frame buffer for use by OpenCL
|
|
|
|
//Aquire the frame buffer for use by OpenCL
|
|
|
|
v2d->clgl([](cv::UMat &frameBuffer) { |
|
|
|
v2d->clgl([](cv::UMat &frameBuffer) { |
|
|
|
//Glow effect (OpenCL)
|
|
|
|
//Glow effect (OpenCL)
|
|
|
|
glow_effect(frameBuffer, frameBuffer, kernel_size); |
|
|
|
glow_effect(frameBuffer, frameBuffer, kernel_size); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
#endif |
|
|
|
update_fps(v2d, false); |
|
|
|
update_fps(v2d, true); |
|
|
|
#ifndef __EMSCRIPTEN__ |
|
|
|
#ifndef __EMSCRIPTEN__ |
|
|
|
v2d->write(); |
|
|
|
v2d->write(); |
|
|
|
#endif |
|
|
|
#endif |
|
|
@ -237,8 +237,6 @@ int main(int argc, char **argv) { |
|
|
|
v2d->makeVAWriter(OUTPUT_FILENAME, cv::VideoWriter::fourcc('V', 'P', '9', '0'), FPS, v2d->getFrameBufferSize(), 0); |
|
|
|
v2d->makeVAWriter(OUTPUT_FILENAME, cv::VideoWriter::fourcc('V', 'P', '9', '0'), FPS, v2d->getFrameBufferSize(), 0); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
v2d->gl(init_scene); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef __EMSCRIPTEN__ |
|
|
|
#ifndef __EMSCRIPTEN__ |
|
|
|
while(true) |
|
|
|
while(true) |
|
|
|
iteration(); |
|
|
|
iteration(); |
|
|
|