void _drawVideo(int x, int y, unsigned int textureId, theoraplayer::VideoClip* clip) { glBindTexture(GL_TEXTURE_2D, textureId); theoraplayer::VideoFrame* frame = clip->fetchNextFrame(); if (frame != NULL) { glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, clip->getWidth(), frame->getHeight(), uploadFormat, GL_UNSIGNED_BYTE, frame->getBuffer()); clip->popFrame(); } float w = clip->getSubFrameWidth(); float h = clip->getSubFrameHeight(); float sx = clip->getSubFrameX(); float sy = clip->getSubFrameY(); float tw = potCeil(w); float th = potCeil(h); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, textureId); if (shaderActive) { enableShader(); } drawTexturedQuad(textureId, x, y, 395.0f, 285.0f, w / tw, h / th, sx / tw, sy / th); if (shaderActive) { disableShader(); } glDisable(GL_TEXTURE_2D); drawColoredQuad(x, y + 285.0f, 395.0f, 15.0f, 0.0f, 0.0f, 0.0f, 1.0f); drawWiredQuad(x, y + 285.0f, 395.0f, 14.0f, 1.0f, 1.0f, 1.0f, 1.0f); float p = clip->getTimePosition() / clip->getDuration(); drawColoredQuad(x + 1.5f, y + 286.0f, 784.0f * p * 0.5f, 11.0f, 1.0f, 1.0f, 1.0f, 1.0f); }
int main (int argc, char **argv) { glutInit(&argc, argv); // Done TODO: activate stencil buffer // glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH | GLUT_STENCIL); glutInitContextVersion(3,3); glutInitContextFlags(GLUT_FORWARD_COMPATIBLE); glutInitContextProfile(GLUT_CORE_PROFILE); windowWidth = 512; windowHeight = 512; glutInitWindowSize(windowWidth, windowHeight); glutInitWindowPosition(100, 100); glutCreateWindow("Exercise 10 - Shadow Volumes"); glutDisplayFunc(updateGL); glutIdleFunc(idle); glutKeyboardFunc(keyboardEvent); glutMouseFunc(mouseEvent); glutMotionFunc(mouseMoveEvent); glewExperimental = GL_TRUE; GLenum err = glewInit(); if (GLEW_OK != err) { std::cout << "(glewInit) - Error: " << glewGetErrorString(err) << std::endl; } std::cout << "(glewInit) - Using GLEW " << glewGetString(GLEW_VERSION) << std::endl; // init stuff // initGL(); // init matrix stacks with identity // glm_ProjectionMatrix.push(glm::mat4(1)); glm_ModelViewMatrix.push(glm::mat4(1)); initShader(); initScene(); // start render loop // if (enableShader()) { glutMainLoop(); disableShader(); // clean up allocated data // deleteShader(); } return 0; }
int main (int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitContextVersion(3,3); glutInitContextFlags(GLUT_FORWARD_COMPATIBLE); glutInitContextProfile(GLUT_CORE_PROFILE); glutInitWindowSize (512, 512); glutInitWindowPosition (100, 100); glutCreateWindow("Exercise 03 - More Bunnies!"); glutDisplayFunc(updateGL); glutIdleFunc(idle); glutKeyboardFunc(keyboardEvent); glewExperimental = GL_TRUE; GLenum err = glewInit(); if (GLEW_OK != err) { std::cout << "(glewInit) - Error: " << glewGetErrorString(err) << std::endl; } std::cout << "(glewInit) - Using GLEW " << glewGetString(GLEW_VERSION) << std::endl; // init stuff // initGL(); // init matrix stacks // glm_ProjectionMatrix.push(glm::mat4(2.414214, 0.000000, 0.000000, 0.000000, 0.000000, 2.414214, 0.000000, 0.000000, 0.000000, 0.000000, -1.002002, -1.000000, 0.000000, 0.000000, -0.020020, 0.000000)); glm_ModelViewMatrix.push(glm::mat4(0.707107, -0.408248, 0.577350, 0.000000, 0.000000, 0.816497, 0.577350, 0.000000, -0.707107, -0.408248, 0.577350, 0.000000, 0.000000, 0.000000, -1.732051, 1.000000)); initShader(); initScene(); // start render loop // if (enableShader()) { glutMainLoop(); disableShader(); // clean up allocated data // deleteScene(); deleteShader(); } return 0; }