X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fvframe3d.C;h=90d75d7b76f6473ec593c870b83b60c0276fd301;hp=d7d4af0a222f317bd6730cef3a3bea42c6f2b60a;hb=HEAD;hpb=c5451a0a1f2a69ffea5e8b85d05787466f355481 diff --git a/cinelerra-5.1/guicast/vframe3d.C b/cinelerra-5.1/guicast/vframe3d.C index d7d4af0a..90d75d7b 100644 --- a/cinelerra-5.1/guicast/vframe3d.C +++ b/cinelerra-5.1/guicast/vframe3d.C @@ -76,15 +76,6 @@ int VFrame::get_texture_components() } - - - - - - - - - void VFrame::to_texture() { #ifdef HAVE_GL @@ -147,7 +138,11 @@ void VFrame::to_texture() void VFrame::create_pbuffer() { +#ifdef GLx4 int ww = (get_w()+3) & ~3, hh = (get_h()+3) & ~3; +#else + int ww = get_w(), hh = get_h(); +#endif if( pbuffer && (pbuffer->w != ww || pbuffer->h != hh || pbuffer->window_id != BC_WindowBase::get_synchronous()->current_window->get_id() ) ) { delete pbuffer; @@ -293,6 +288,10 @@ void VFrame::init_screen(int w, int h) glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, zero); glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, zero); glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0); +#ifndef GLx4 + glPixelStorei(GL_PACK_ALIGNMENT,1); + glPixelStorei(GL_UNPACK_ALIGNMENT,1); +#endif #endif } @@ -445,8 +444,14 @@ void VFrame::dump_shader(int shader_id) void VFrame::clear_pbuffer() { #ifdef HAVE_GL - float gbuv = BC_CModels::is_yuv(get_color_model()) ? 0.5 : 0; - glClearColor(0.0, gbuv, gbuv, 0.0); + int rgb = clear_color>=0 ? clear_color : 0; + int a = clear_color>=0 ? clear_alpha : 0; + int r = (rgb>>16) & 0xff; + int g = (rgb>> 8) & 0xff; + int b = (rgb>> 0) & 0xff; + if( BC_CModels::is_yuv(get_color_model()) ) + YUV::yuv.rgb_to_yuv_8(r, g, b); + glClearColor(r/255.f, g/255.f, b/255.f, a/255.f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); #endif }