}
-
-
-
-
-
-
-
-
-
void VFrame::to_texture()
{
#ifdef HAVE_GL
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;
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
}
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
}