mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
Merge branch 'release/1.9.x'
This commit is contained in:
commit
f658283911
@ -1,4 +1,4 @@
|
|||||||
.TH PVIEW 1 "27 December 2014" "" Panda3D
|
.TH PVIEW 1 "1 May 2015" "" Panda3D
|
||||||
.SH NAME
|
.SH NAME
|
||||||
pview \- quickly view a Panda model and/or animation
|
pview \- quickly view a Panda model and/or animation
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@ -43,6 +43,15 @@ exit.
|
|||||||
Delete the model files after loading them (presumably this option
|
Delete the model files after loading them (presumably this option
|
||||||
will only be used when loading a temporary model file).
|
will only be used when loading a temporary model file).
|
||||||
.TP
|
.TP
|
||||||
|
.B \-L
|
||||||
|
Enable lighting in the scene. This can also be achieved with
|
||||||
|
the 'l' hotkey at runtime.
|
||||||
|
.TP
|
||||||
|
.BI "\-P " pipename
|
||||||
|
Select the given graphics pipe for the window, rather than using
|
||||||
|
the platform default. The allowed values for <pipe> are those
|
||||||
|
from the Config.prc variables 'load-display' and 'aux-display'.
|
||||||
|
.TP
|
||||||
.B \-V
|
.B \-V
|
||||||
Report the current version of Panda, and exit.
|
Report the current version of Panda, and exit.
|
||||||
.TP
|
.TP
|
||||||
|
@ -25,7 +25,7 @@ PStatGPUTimer(GraphicsStateGuardian *gsg, PStatCollector &collector) :
|
|||||||
PStatTimer(collector),
|
PStatTimer(collector),
|
||||||
_gsg(gsg)
|
_gsg(gsg)
|
||||||
{
|
{
|
||||||
if (gsg->get_timer_queries_active()) {
|
if (gsg->get_timer_queries_active() && collector.is_active()) {
|
||||||
gsg->issue_timer_query(collector.get_index());
|
gsg->issue_timer_query(collector.get_index());
|
||||||
//cerr << "issuing " << collector << " active " << collector.is_active() << "\n";
|
//cerr << "issuing " << collector << " active " << collector.is_active() << "\n";
|
||||||
}
|
}
|
||||||
@ -41,7 +41,7 @@ PStatGPUTimer(GraphicsStateGuardian *gsg, PStatCollector &collector, Thread *cur
|
|||||||
PStatTimer(collector, current_thread),
|
PStatTimer(collector, current_thread),
|
||||||
_gsg(gsg)
|
_gsg(gsg)
|
||||||
{
|
{
|
||||||
if (gsg->get_timer_queries_active()) {
|
if (gsg->get_timer_queries_active() && collector.is_active()) {
|
||||||
gsg->issue_timer_query(collector.get_index());
|
gsg->issue_timer_query(collector.get_index());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -53,7 +53,7 @@ PStatGPUTimer(GraphicsStateGuardian *gsg, PStatCollector &collector, Thread *cur
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
INLINE PStatGPUTimer::
|
INLINE PStatGPUTimer::
|
||||||
~PStatGPUTimer() {
|
~PStatGPUTimer() {
|
||||||
if (_gsg->get_timer_queries_active()) {
|
if (_gsg->get_timer_queries_active() && _collector.is_active()) {
|
||||||
_gsg->issue_timer_query(_collector.get_index() | 0x8000);
|
_gsg->issue_timer_query(_collector.get_index() | 0x8000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3803,7 +3803,7 @@ disable_standard_vertex_arrays() {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
bool CLP(GraphicsStateGuardian)::
|
bool CLP(GraphicsStateGuardian)::
|
||||||
draw_triangles(const GeomPrimitivePipelineReader *reader, bool force) {
|
draw_triangles(const GeomPrimitivePipelineReader *reader, bool force) {
|
||||||
PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
//PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
if (GLCAT.is_spam()) {
|
if (GLCAT.is_spam()) {
|
||||||
@ -3870,7 +3870,7 @@ draw_triangles(const GeomPrimitivePipelineReader *reader, bool force) {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
bool CLP(GraphicsStateGuardian)::
|
bool CLP(GraphicsStateGuardian)::
|
||||||
draw_tristrips(const GeomPrimitivePipelineReader *reader, bool force) {
|
draw_tristrips(const GeomPrimitivePipelineReader *reader, bool force) {
|
||||||
PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
//PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
||||||
|
|
||||||
report_my_gl_errors();
|
report_my_gl_errors();
|
||||||
|
|
||||||
@ -3997,7 +3997,8 @@ draw_tristrips(const GeomPrimitivePipelineReader *reader, bool force) {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
bool CLP(GraphicsStateGuardian)::
|
bool CLP(GraphicsStateGuardian)::
|
||||||
draw_trifans(const GeomPrimitivePipelineReader *reader, bool force) {
|
draw_trifans(const GeomPrimitivePipelineReader *reader, bool force) {
|
||||||
PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
//PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
if (GLCAT.is_spam()) {
|
if (GLCAT.is_spam()) {
|
||||||
GLCAT.spam() << "draw_trifans: " << *(reader->get_object()) << "\n";
|
GLCAT.spam() << "draw_trifans: " << *(reader->get_object()) << "\n";
|
||||||
@ -4077,7 +4078,7 @@ draw_trifans(const GeomPrimitivePipelineReader *reader, bool force) {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
bool CLP(GraphicsStateGuardian)::
|
bool CLP(GraphicsStateGuardian)::
|
||||||
draw_patches(const GeomPrimitivePipelineReader *reader, bool force) {
|
draw_patches(const GeomPrimitivePipelineReader *reader, bool force) {
|
||||||
PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
//PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
if (GLCAT.is_spam()) {
|
if (GLCAT.is_spam()) {
|
||||||
@ -4153,7 +4154,8 @@ draw_patches(const GeomPrimitivePipelineReader *reader, bool force) {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
bool CLP(GraphicsStateGuardian)::
|
bool CLP(GraphicsStateGuardian)::
|
||||||
draw_lines(const GeomPrimitivePipelineReader *reader, bool force) {
|
draw_lines(const GeomPrimitivePipelineReader *reader, bool force) {
|
||||||
PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
//PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
if (GLCAT.is_spam()) {
|
if (GLCAT.is_spam()) {
|
||||||
GLCAT.spam() << "draw_lines: " << *(reader->get_object()) << "\n";
|
GLCAT.spam() << "draw_lines: " << *(reader->get_object()) << "\n";
|
||||||
@ -4217,7 +4219,7 @@ draw_lines(const GeomPrimitivePipelineReader *reader, bool force) {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
bool CLP(GraphicsStateGuardian)::
|
bool CLP(GraphicsStateGuardian)::
|
||||||
draw_linestrips(const GeomPrimitivePipelineReader *reader, bool force) {
|
draw_linestrips(const GeomPrimitivePipelineReader *reader, bool force) {
|
||||||
PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
//PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
||||||
|
|
||||||
report_my_gl_errors();
|
report_my_gl_errors();
|
||||||
|
|
||||||
@ -4341,7 +4343,8 @@ draw_linestrips(const GeomPrimitivePipelineReader *reader, bool force) {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
bool CLP(GraphicsStateGuardian)::
|
bool CLP(GraphicsStateGuardian)::
|
||||||
draw_points(const GeomPrimitivePipelineReader *reader, bool force) {
|
draw_points(const GeomPrimitivePipelineReader *reader, bool force) {
|
||||||
PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
//PStatGPUTimer timer(this, _draw_primitive_pcollector, reader->get_current_thread());
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
if (GLCAT.is_spam()) {
|
if (GLCAT.is_spam()) {
|
||||||
GLCAT.spam() << "draw_points: " << *(reader->get_object()) << "\n";
|
GLCAT.spam() << "draw_points: " << *(reader->get_object()) << "\n";
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "virtualFileSystem.h"
|
#include "virtualFileSystem.h"
|
||||||
#include "panda_getopt.h"
|
#include "panda_getopt.h"
|
||||||
#include "preprocess_argv.h"
|
#include "preprocess_argv.h"
|
||||||
|
#include "graphicsPipeSelection.h"
|
||||||
|
|
||||||
// By including checkPandaVersion.h, we guarantee that runtime
|
// By including checkPandaVersion.h, we guarantee that runtime
|
||||||
// attempts to run pview will fail if it inadvertently links with the
|
// attempts to run pview will fail if it inadvertently links with the
|
||||||
@ -209,6 +210,15 @@ help() {
|
|||||||
" Delete the model files after loading them (presumably this option\n"
|
" Delete the model files after loading them (presumably this option\n"
|
||||||
" will only be used when loading a temporary model file).\n\n"
|
" will only be used when loading a temporary model file).\n\n"
|
||||||
|
|
||||||
|
" -L\n"
|
||||||
|
" Enable lighting in the scene. This can also be achieved with\n"
|
||||||
|
" the 'l' hotkey at runtime.\n\n"
|
||||||
|
|
||||||
|
" -P <pipe>\n"
|
||||||
|
" Select the given graphics pipe for the window, rather than using\n"
|
||||||
|
" the platform default. The allowed values for <pipe> are those\n"
|
||||||
|
" from the Config.prc variables 'load-display' and 'aux-display'.\n\n"
|
||||||
|
|
||||||
" -V\n"
|
" -V\n"
|
||||||
" Report the current version of Panda, and exit.\n\n"
|
" Report the current version of Panda, and exit.\n\n"
|
||||||
|
|
||||||
@ -241,10 +251,12 @@ main(int argc, char **argv) {
|
|||||||
PartGroup::HMF_ok_anim_extra;
|
PartGroup::HMF_ok_anim_extra;
|
||||||
Filename screenshotfn;
|
Filename screenshotfn;
|
||||||
bool delete_models = false;
|
bool delete_models = false;
|
||||||
|
bool apply_lighting = false;
|
||||||
|
PointerTo<GraphicsPipe> pipe = NULL;
|
||||||
|
|
||||||
extern char *optarg;
|
extern char *optarg;
|
||||||
extern int optind;
|
extern int optind;
|
||||||
static const char *optflags = "acls:DVhi";
|
static const char *optflags = "acls:DVhiLP:";
|
||||||
int flag = getopt(argc, argv, optflags);
|
int flag = getopt(argc, argv, optflags);
|
||||||
|
|
||||||
while (flag != EOF) {
|
while (flag != EOF) {
|
||||||
@ -275,6 +287,19 @@ main(int argc, char **argv) {
|
|||||||
delete_models = true;
|
delete_models = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'L':
|
||||||
|
apply_lighting = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'P': {
|
||||||
|
pipe = GraphicsPipeSelection::get_global_ptr()->make_module_pipe(optarg);
|
||||||
|
if (!pipe) {
|
||||||
|
cerr << "No such pipe '" << optarg << "' available." << endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case 'V':
|
case 'V':
|
||||||
report_version();
|
report_version();
|
||||||
return 1;
|
return 1;
|
||||||
@ -296,7 +321,7 @@ main(int argc, char **argv) {
|
|||||||
argc -= (optind - 1);
|
argc -= (optind - 1);
|
||||||
argv += (optind - 1);
|
argv += (optind - 1);
|
||||||
|
|
||||||
WindowFramework *window = framework.open_window();
|
WindowFramework *window = framework.open_window(pipe, NULL);
|
||||||
if (window != (WindowFramework *)NULL) {
|
if (window != (WindowFramework *)NULL) {
|
||||||
// We've successfully opened a window.
|
// We've successfully opened a window.
|
||||||
|
|
||||||
@ -348,6 +373,10 @@ main(int argc, char **argv) {
|
|||||||
|
|
||||||
loading_np.remove_node();
|
loading_np.remove_node();
|
||||||
|
|
||||||
|
if (apply_lighting) {
|
||||||
|
window->set_lighting(true);
|
||||||
|
}
|
||||||
|
|
||||||
if (auto_center) {
|
if (auto_center) {
|
||||||
window->center_trackball(framework.get_models());
|
window->center_trackball(framework.get_models());
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user