mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
RenderModeAttrib::M_filled_flat
This commit is contained in:
parent
bdde0c3185
commit
6073c8dee9
@ -2002,6 +2002,7 @@ do_issue_render_mode() {
|
|||||||
switch (mode) {
|
switch (mode) {
|
||||||
case RenderModeAttrib::M_unchanged:
|
case RenderModeAttrib::M_unchanged:
|
||||||
case RenderModeAttrib::M_filled:
|
case RenderModeAttrib::M_filled:
|
||||||
|
case RenderModeAttrib::M_filled_flat:
|
||||||
_d3d_device->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
|
_d3d_device->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -3257,6 +3257,7 @@ do_issue_render_mode() {
|
|||||||
switch (mode) {
|
switch (mode) {
|
||||||
case RenderModeAttrib::M_unchanged:
|
case RenderModeAttrib::M_unchanged:
|
||||||
case RenderModeAttrib::M_filled:
|
case RenderModeAttrib::M_filled:
|
||||||
|
case RenderModeAttrib::M_filled_flat:
|
||||||
set_render_state(D3DRS_FILLMODE, D3DFILL_SOLID);
|
set_render_state(D3DRS_FILLMODE, D3DFILL_SOLID);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -3782,6 +3782,7 @@ do_issue_render_mode() {
|
|||||||
switch (_render_mode) {
|
switch (_render_mode) {
|
||||||
case RenderModeAttrib::M_unchanged:
|
case RenderModeAttrib::M_unchanged:
|
||||||
case RenderModeAttrib::M_filled:
|
case RenderModeAttrib::M_filled:
|
||||||
|
case RenderModeAttrib::M_filled_flat:
|
||||||
GLP(PolygonMode)(GL_FRONT_AND_BACK, GL_FILL);
|
GLP(PolygonMode)(GL_FRONT_AND_BACK, GL_FILL);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -258,10 +258,10 @@ munge_points_to_quads(const CullTraverser *traverser, bool force) {
|
|||||||
point_size = render_mode->get_thickness();
|
point_size = render_mode->get_thickness();
|
||||||
perspective = render_mode->get_perspective();
|
perspective = render_mode->get_perspective();
|
||||||
|
|
||||||
if (render_mode->get_mode() != RenderModeAttrib::M_filled) {
|
if (render_mode->get_mode() != RenderModeAttrib::M_filled_flat) {
|
||||||
// Be sure to turn on polygon render mode, since we're actually
|
// Render the new polygons with M_filled_flat, for a slight
|
||||||
// rendering polygons, not points any more.
|
// performance advantage when software rendering.
|
||||||
_state = _state->add_attrib(RenderModeAttrib::make(RenderModeAttrib::M_filled));
|
_state = _state->add_attrib(RenderModeAttrib::make(RenderModeAttrib::M_filled_flat));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,11 +61,11 @@ output(ostream &out) const {
|
|||||||
out << get_type() << ":";
|
out << get_type() << ":";
|
||||||
switch (get_mode()) {
|
switch (get_mode()) {
|
||||||
case M_unchanged:
|
case M_unchanged:
|
||||||
out << "unchanged(" << get_thickness() << ")";
|
out << "unchanged";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_filled:
|
case M_filled:
|
||||||
out << "filled(" << get_thickness() << ")";
|
out << "filled";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case M_wireframe:
|
case M_wireframe:
|
||||||
@ -75,6 +75,10 @@ output(ostream &out) const {
|
|||||||
case M_point:
|
case M_point:
|
||||||
out << "point(" << get_thickness() << ")";
|
out << "point(" << get_thickness() << ")";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case M_filled_flat:
|
||||||
|
out << "filled_flat";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (get_perspective()) {
|
if (get_perspective()) {
|
||||||
|
@ -30,9 +30,21 @@ class EXPCL_PANDA_PGRAPH RenderModeAttrib : public RenderAttrib {
|
|||||||
PUBLISHED:
|
PUBLISHED:
|
||||||
enum Mode {
|
enum Mode {
|
||||||
M_unchanged,
|
M_unchanged,
|
||||||
|
|
||||||
|
// Normal, filled polygons.
|
||||||
M_filled,
|
M_filled,
|
||||||
|
|
||||||
|
// Wireframe polygons, possibly with thickness.
|
||||||
M_wireframe,
|
M_wireframe,
|
||||||
M_point
|
|
||||||
|
// Points at vertices only, possibly with thickness and/or
|
||||||
|
// perspective sizing.
|
||||||
|
M_point,
|
||||||
|
|
||||||
|
// Filled polygons, without any particular emphasis on perspective
|
||||||
|
// correctness (a particularly useful designation for software
|
||||||
|
// rendering sprites).
|
||||||
|
M_filled_flat
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -103,6 +103,12 @@ reset() {
|
|||||||
_alpha_scale_via_texture = false;
|
_alpha_scale_via_texture = false;
|
||||||
_runtime_color_scale = true;
|
_runtime_color_scale = true;
|
||||||
|
|
||||||
|
_color_material_flags = 0;
|
||||||
|
_texturing_state = 0;
|
||||||
|
_texfilter_state = 0;
|
||||||
|
_texture_replace = false;
|
||||||
|
_filled_flat = false;
|
||||||
|
|
||||||
// Now that the GSG has been initialized, make it available for
|
// Now that the GSG has been initialized, make it available for
|
||||||
// optimizations.
|
// optimizations.
|
||||||
add_gsg(this);
|
add_gsg(this);
|
||||||
@ -800,9 +806,11 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader,
|
|||||||
int texfilter_state = 0; // tnearest
|
int texfilter_state = 0; // tnearest
|
||||||
if (texturing_state > 0) {
|
if (texturing_state > 0) {
|
||||||
texfilter_state = _texfilter_state;
|
texfilter_state = _texfilter_state;
|
||||||
if (_c->matrix_model_projection_no_w_transform) {
|
if (_c->matrix_model_projection_no_w_transform ||
|
||||||
|
_filled_flat) {
|
||||||
// Don't bother with the perspective-correct algorithm if we're
|
// Don't bother with the perspective-correct algorithm if we're
|
||||||
// under an orthonormal lens, e.g. render2d.
|
// under an orthonormal lens, e.g. render2d; or if
|
||||||
|
// RenderMode::M_filled_flat is in effect.
|
||||||
texturing_state = 1; // textured (not perspective correct)
|
texturing_state = 1; // textured (not perspective correct)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1602,6 +1610,8 @@ void TinyGraphicsStateGuardian::
|
|||||||
do_issue_render_mode() {
|
do_issue_render_mode() {
|
||||||
const RenderModeAttrib *attrib = _target._render_mode;
|
const RenderModeAttrib *attrib = _target._render_mode;
|
||||||
|
|
||||||
|
_filled_flat = false;
|
||||||
|
|
||||||
switch (attrib->get_mode()) {
|
switch (attrib->get_mode()) {
|
||||||
case RenderModeAttrib::M_unchanged:
|
case RenderModeAttrib::M_unchanged:
|
||||||
case RenderModeAttrib::M_filled:
|
case RenderModeAttrib::M_filled:
|
||||||
@ -1609,6 +1619,12 @@ do_issue_render_mode() {
|
|||||||
_c->draw_triangle_back = gl_draw_triangle_fill;
|
_c->draw_triangle_back = gl_draw_triangle_fill;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case RenderModeAttrib::M_filled_flat:
|
||||||
|
_c->draw_triangle_front = gl_draw_triangle_fill;
|
||||||
|
_c->draw_triangle_back = gl_draw_triangle_fill;
|
||||||
|
_filled_flat = true;
|
||||||
|
break;
|
||||||
|
|
||||||
case RenderModeAttrib::M_wireframe:
|
case RenderModeAttrib::M_wireframe:
|
||||||
_c->draw_triangle_front = gl_draw_triangle_line;
|
_c->draw_triangle_front = gl_draw_triangle_line;
|
||||||
_c->draw_triangle_back = gl_draw_triangle_line;
|
_c->draw_triangle_back = gl_draw_triangle_line;
|
||||||
|
@ -139,6 +139,7 @@ private:
|
|||||||
int _texturing_state;
|
int _texturing_state;
|
||||||
int _texfilter_state;
|
int _texfilter_state;
|
||||||
bool _texture_replace;
|
bool _texture_replace;
|
||||||
|
bool _filled_flat;
|
||||||
|
|
||||||
SimpleLru _textures_lru;
|
SimpleLru _textures_lru;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user