mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
Buffer fixes and bug fixes
This commit is contained in:
parent
9dd90b0e8b
commit
b4427c874d
@ -198,15 +198,6 @@ public:
|
||||
virtual bool begin_frame(FrameMode mode, Thread *current_thread);
|
||||
virtual void end_frame(FrameMode mode, Thread *current_thread);
|
||||
|
||||
// These entry points have been removed. Use begin_frame/end_frame instead.
|
||||
// virtual void begin_render_texture();
|
||||
// virtual void end_render_texture();
|
||||
// INLINE bool needs_context() const;
|
||||
// bool _needs_context;
|
||||
// virtual bool make_context();
|
||||
// virtual void make_current();
|
||||
// virtual void auto_resize();
|
||||
|
||||
void change_scenes(DisplayRegionPipelineReader *new_dr);
|
||||
virtual void select_cube_map(int cube_map_index);
|
||||
|
||||
|
@ -692,7 +692,11 @@ reset() {
|
||||
has_extension("GL_ARB_fragment_program_shadow")) {
|
||||
_supports_shadow_filter = true;
|
||||
}
|
||||
|
||||
if (_gl_vendor.substr(0,3)=="ATI") {
|
||||
// ATI drivers have never provided correct shadow support.
|
||||
_supports_shadow_filter = false;
|
||||
}
|
||||
|
||||
_supports_texture_combine =
|
||||
has_extension("GL_ARB_texture_env_combine") || is_at_least_version(1, 3);
|
||||
_supports_texture_saved_result =
|
||||
|
@ -95,7 +95,11 @@ begin_frame(FrameMode mode, Thread *current_thread) {
|
||||
glxgsg->reset_if_new();
|
||||
|
||||
if (mode == FM_render) {
|
||||
// begin_render_texture();
|
||||
for (int i=0; i<count_textures(); i++) {
|
||||
if (get_rtm_mode(i) == RTM_bind_or_copy) {
|
||||
_textures[i]._rtm_mode = RTM_copy_texture;
|
||||
}
|
||||
}
|
||||
clear_cube_map_selection();
|
||||
}
|
||||
|
||||
@ -116,7 +120,6 @@ end_frame(FrameMode mode, Thread *current_thread) {
|
||||
nassertv(_gsg != (GraphicsStateGuardian *)NULL);
|
||||
|
||||
if (mode == FM_render) {
|
||||
// end_render_texture();
|
||||
copy_to_textures();
|
||||
}
|
||||
|
||||
|
@ -75,7 +75,11 @@ begin_frame(FrameMode mode, Thread *current_thread) {
|
||||
mesagsg->reset_if_new();
|
||||
|
||||
if (mode == FM_render) {
|
||||
// begin_render_texture();
|
||||
for (int i=0; i<count_textures(); i++) {
|
||||
if (get_rtm_mode(i) == RTM_bind_or_copy) {
|
||||
_textures[i]._rtm_mode = RTM_copy_texture;
|
||||
}
|
||||
}
|
||||
clear_cube_map_selection();
|
||||
}
|
||||
_gsg->set_current_properties(&get_fb_properties());
|
||||
@ -95,7 +99,6 @@ end_frame(FrameMode mode, Thread *current_thread) {
|
||||
nassertv(_gsg != (GraphicsStateGuardian *)NULL);
|
||||
|
||||
if (mode == FM_render) {
|
||||
// end_render_texture();
|
||||
copy_to_textures();
|
||||
}
|
||||
|
||||
|
@ -80,7 +80,11 @@ begin_frame(FrameMode mode, Thread *current_thread) {
|
||||
|
||||
if (mode == FM_render)
|
||||
{
|
||||
// begin_render_texture();
|
||||
for (int i=0; i<count_textures(); i++) {
|
||||
if (get_rtm_mode(i) == RTM_bind_or_copy) {
|
||||
_textures[i]._rtm_mode = RTM_copy_texture;
|
||||
}
|
||||
}
|
||||
clear_cube_map_selection();
|
||||
}
|
||||
_gsg->set_current_properties(&get_fb_properties());
|
||||
@ -101,7 +105,6 @@ end_frame(FrameMode mode, Thread *current_thread) {
|
||||
|
||||
if (mode == FM_render)
|
||||
{
|
||||
// end_render_texture();
|
||||
copy_to_textures();
|
||||
}
|
||||
|
||||
|
@ -95,6 +95,13 @@ begin_frame(FrameMode mode, Thread *current_thread) {
|
||||
&_make_current_pcollector);
|
||||
|
||||
if (mode == FM_render) {
|
||||
for (int i=0; i<count_textures(); i++) {
|
||||
if (get_texture_plane(i) != RTP_color) {
|
||||
if (get_rtm_mode(i) == RTM_bind_or_copy) {
|
||||
_textures[i]._rtm_mode = RTM_copy_texture;
|
||||
}
|
||||
}
|
||||
}
|
||||
clear_cube_map_selection();
|
||||
}
|
||||
|
||||
@ -115,8 +122,8 @@ end_frame(FrameMode mode, Thread *current_thread) {
|
||||
nassertv(_gsg != (GraphicsStateGuardian *)NULL);
|
||||
|
||||
if (mode == FM_render) {
|
||||
bind_texture_to_pbuffer();
|
||||
copy_to_textures();
|
||||
bind_texture_to_pbuffer();
|
||||
}
|
||||
|
||||
_gsg->end_frame(current_thread);
|
||||
@ -146,16 +153,12 @@ bind_texture_to_pbuffer() {
|
||||
|
||||
int tex_index = -1;
|
||||
for (int i=0; i<count_textures(); i++) {
|
||||
if (get_rtm_mode(i) == RTM_bind_or_copy) {
|
||||
if ((get_texture(i)->get_format() != Texture::F_depth_stencil)&&
|
||||
(tex_index < 0)) {
|
||||
tex_index = i;
|
||||
} else {
|
||||
_textures[i]._rtm_mode = RTM_copy_texture;
|
||||
}
|
||||
if (get_texture_plane(i) == RTP_color) {
|
||||
tex_index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (tex_index >= 0) {
|
||||
Texture *tex = get_texture(tex_index);
|
||||
if ((_pbuffer_bound != 0)&&(_pbuffer_bound != tex)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user