mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
add support for particle-system draw-sprite, other renderstate optimization
This commit is contained in:
parent
997cff02d6
commit
49d65e117b
File diff suppressed because it is too large
Load Diff
@ -64,11 +64,6 @@ extern void dbgPrintVidMem(LPDIRECTDRAW7 pDD, LPDDSCAPS2 lpddsCaps,const char *p
|
|||||||
#define PRINTVIDMEM(pDD,pCaps,pMsg)
|
#define PRINTVIDMEM(pDD,pCaps,pMsg)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//const int VERT_BUFFER_SIZE = (8*1024L);
|
|
||||||
// For sparkle particles, we can have 4 vertices per sparkle, and a
|
|
||||||
// particle pool size of 1024 particles
|
|
||||||
const int VERT_BUFFER_SIZE = (32*4*1024L);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Class : DXGraphicsStateGuardian
|
// Class : DXGraphicsStateGuardian
|
||||||
// Description : A GraphicsStateGuardian specialized for rendering
|
// Description : A GraphicsStateGuardian specialized for rendering
|
||||||
@ -187,21 +182,22 @@ protected:
|
|||||||
void set_read_buffer(const RenderBuffer &rb);
|
void set_read_buffer(const RenderBuffer &rb);
|
||||||
|
|
||||||
void bind_texture(TextureContext *tc);
|
void bind_texture(TextureContext *tc);
|
||||||
void specify_texture(Texture *tex);
|
|
||||||
void apply_texture_immediate(DXTextureContext *tc);
|
|
||||||
|
|
||||||
// for storage of the flexible vertex format
|
// for storage of the flexible vertex format
|
||||||
void *_fvf_buf;
|
char *_fvf_buf;
|
||||||
void *_sav_fvf;
|
char *_sav_fvf; // base of malloced array
|
||||||
INLINE void add_to_FVF(void *data, size_t bytes) ;
|
INLINE void add_to_FVF(void *data, size_t bytes) ;
|
||||||
|
WORD *_index_buf; // base of malloced array
|
||||||
|
|
||||||
bool _dx_ready;
|
bool _dx_ready;
|
||||||
|
bool _bIsTNLDevice;
|
||||||
LPDIRECTDRAWSURFACE7 _back;
|
LPDIRECTDRAWSURFACE7 _back;
|
||||||
LPDIRECTDRAWSURFACE7 _zbuf;
|
LPDIRECTDRAWSURFACE7 _zbuf;
|
||||||
LPDIRECT3D7 _d3d;
|
LPDIRECT3D7 _d3d;
|
||||||
LPDIRECT3DDEVICE7 _d3dDevice;
|
LPDIRECT3DDEVICE7 _d3dDevice;
|
||||||
LPDIRECTDRAWSURFACE7 _pri;
|
LPDIRECTDRAWSURFACE7 _pri;
|
||||||
LPDIRECTDRAW7 _pDD;
|
LPDIRECTDRAW7 _pDD;
|
||||||
|
|
||||||
RECT _view_rect;
|
RECT _view_rect;
|
||||||
RECT clip_rect;
|
RECT clip_rect;
|
||||||
HDC _hdc;
|
HDC _hdc;
|
||||||
@ -243,11 +239,11 @@ protected:
|
|||||||
INLINE void enable_stencil_test(bool val);
|
INLINE void enable_stencil_test(bool val);
|
||||||
bool enable_light(int light, bool val);
|
bool enable_light(int light, bool val);
|
||||||
|
|
||||||
D3DTEXTUREADDRESS get_texture_wrap_mode(Texture::WrapMode wm);
|
INLINE D3DTEXTUREADDRESS get_texture_wrap_mode(Texture::WrapMode wm);
|
||||||
D3DCMPFUNC get_depth_func_type(DepthTestProperty::Mode m) const;
|
INLINE D3DCMPFUNC get_depth_func_type(DepthTestProperty::Mode m) const;
|
||||||
D3DCMPFUNC get_stencil_func_type(StencilProperty::Mode m) const;
|
INLINE D3DCMPFUNC get_stencil_func_type(StencilProperty::Mode m) const;
|
||||||
D3DSTENCILOP get_stencil_action_type(StencilProperty::Action a) const;
|
INLINE D3DSTENCILOP get_stencil_action_type(StencilProperty::Action a) const;
|
||||||
D3DFOGMODE get_fog_mode_type(Fog::Mode m) const;
|
INLINE D3DFOGMODE get_fog_mode_type(Fog::Mode m) const;
|
||||||
|
|
||||||
void draw_prim_inner_loop(int loops, const Geom *geom);
|
void draw_prim_inner_loop(int loops, const Geom *geom);
|
||||||
void draw_prim_inner_loop2(int loops, const Geom *geom, short& per);
|
void draw_prim_inner_loop2(int loops, const Geom *geom, short& per);
|
||||||
@ -303,8 +299,6 @@ protected:
|
|||||||
D3DBLEND _blend_source_func;
|
D3DBLEND _blend_source_func;
|
||||||
D3DBLEND _blend_dest_func;
|
D3DBLEND _blend_dest_func;
|
||||||
|
|
||||||
TextureApplyProperty::Mode _CurTexBlendMode;
|
|
||||||
|
|
||||||
int _pack_alignment;
|
int _pack_alignment;
|
||||||
int _unpack_alignment;
|
int _unpack_alignment;
|
||||||
|
|
||||||
@ -331,6 +325,12 @@ protected:
|
|||||||
bool _alpha_test_enabled;
|
bool _alpha_test_enabled;
|
||||||
int _decal_level;
|
int _decal_level;
|
||||||
|
|
||||||
|
// Cur Texture State
|
||||||
|
TextureApplyProperty::Mode _CurTexBlendMode;
|
||||||
|
Texture::FilterType _CurTexMagFilter,_CurTexMinFilter;
|
||||||
|
DWORD _CurTexAnisoDegree;
|
||||||
|
Texture::WrapMode _CurTexWrapModeU,_CurTexWrapModeV;
|
||||||
|
|
||||||
PTA(Light*) _available_light_ids;
|
PTA(Light*) _available_light_ids;
|
||||||
int _max_lights;
|
int _max_lights;
|
||||||
bool* _cur_light_enabled;
|
bool* _cur_light_enabled;
|
||||||
@ -368,7 +368,7 @@ public:
|
|||||||
INLINE void Set_HDC(HDC hdc) { _hdc = hdc; }
|
INLINE void Set_HDC(HDC hdc) { _hdc = hdc; }
|
||||||
void adjust_view_rect(int x, int y);
|
void adjust_view_rect(int x, int y);
|
||||||
INLINE void SetDXStatus(bool stat) { _dx_ready = stat; }
|
INLINE void SetDXStatus(bool stat) { _dx_ready = stat; }
|
||||||
void DXGraphicsStateGuardian::SetTextureBlendMode(TextureApplyProperty::Mode TexBlendMode);
|
void DXGraphicsStateGuardian::SetTextureBlendMode(TextureApplyProperty::Mode TexBlendMode,bool bJustEnable);
|
||||||
|
|
||||||
void dx_cleanup();
|
void dx_cleanup();
|
||||||
void dx_setup_after_resize(RECT viewrect,HWND mwindow) ;
|
void dx_setup_after_resize(RECT viewrect,HWND mwindow) ;
|
||||||
@ -381,7 +381,6 @@ public:
|
|||||||
LPDIRECT3DDEVICE7 d3dDevice,
|
LPDIRECT3DDEVICE7 d3dDevice,
|
||||||
RECT viewrect);
|
RECT viewrect);
|
||||||
friend HRESULT CALLBACK EnumTexFmtsCallback( LPDDPIXELFORMAT pddpf, VOID* param );
|
friend HRESULT CALLBACK EnumTexFmtsCallback( LPDDPIXELFORMAT pddpf, VOID* param );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static TypeHandle _type_handle;
|
static TypeHandle _type_handle;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user