*** empty log message ***
This commit is contained in:
parent
784e24a29e
commit
7108474f44
|
|
@ -96,6 +96,9 @@ def textToHTML(comment, sep, delsection=None):
|
|||
line = line.lstrip(" ").lstrip(sep).lstrip(" ").rstrip("\r").rstrip(" ")
|
||||
if (line == ""):
|
||||
sections.append("")
|
||||
elif (line[0]=="*") or (line[0]=="-"):
|
||||
sections.append(line)
|
||||
sections.append("")
|
||||
elif (SECHEADER.match(line)):
|
||||
sections.append(line)
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -15,7 +15,8 @@
|
|||
import sys, os, getopt, string, shutil, py_compile
|
||||
|
||||
OPTIONLIST = [
|
||||
("game", 1, "Name of directory containing game"),
|
||||
("dir", 1, "Name of directory containing game"),
|
||||
("name", 1, "Human-readable name of the game"),
|
||||
("version", 1, "Version number to add to game name"),
|
||||
("rmdir", 2, "Delete all directories with given name"),
|
||||
("rmext", 2, "Delete all files with given extension"),
|
||||
|
|
@ -69,7 +70,7 @@ OPTIONS = ParseOptions(sys.argv[1:])
|
|||
|
||||
PANDA=None
|
||||
for dir in sys.path:
|
||||
if (dir != "") and os.path.exists(os.path.join(dir,"direct")) and os.path.exists(os.path.join(dir,"pandac")) and os.path.exists(os.path.join(dir,"python")) and os.path.exists(os.path.join(dir,"nsis")):
|
||||
if (dir != "") and os.path.exists(os.path.join(dir,"direct")) and os.path.exists(os.path.join(dir,"pandac")) and os.path.exists(os.path.join(dir,"python")):
|
||||
PANDA=os.path.abspath(dir)
|
||||
if (PANDA is None):
|
||||
sys.exit("Cannot locate the panda root directory in the python path (cannot locate directory containing direct and pandac).")
|
||||
|
|
@ -84,31 +85,33 @@ else:
|
|||
|
||||
##############################################################################
|
||||
#
|
||||
# Identify the main parts of the game: GAME, NAME, MAIN, ICON, BITMAP, etc
|
||||
# Identify the main parts of the game: DIR, NAME, MAIN, ICON, BITMAP, etc
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
VER=OPTIONS["version"]
|
||||
GAME=OPTIONS["game"]
|
||||
if (GAME==""):
|
||||
print "You must specify the --game option."
|
||||
DIR=OPTIONS["dir"]
|
||||
if (DIR==""):
|
||||
print "You must specify the --dir option."
|
||||
ParseFailure()
|
||||
GAME=os.path.abspath(GAME)
|
||||
NAME=os.path.basename(GAME)
|
||||
SMDIRECTORY=os.path.basename(GAME)
|
||||
DIR=os.path.abspath(DIR)
|
||||
NAME=os.path.basename(DIR)
|
||||
if (OPTIONS["name"] != ""):
|
||||
NAME=OPTIONS["name"]
|
||||
SMDIRECTORY=NAME
|
||||
if (VER!=""): SMDIRECTORY=SMDIRECTORY+" "+VER
|
||||
ICON=os.path.join(GAME, NAME+".ico")
|
||||
BITMAP=os.path.join(GAME, NAME+".bmp")
|
||||
LICENSE=os.path.join(GAME,"LICENSE.TXT")
|
||||
OUTFILE=os.path.basename(GAME)
|
||||
ICON=os.path.join(DIR, "icon.ico")
|
||||
BITMAP=os.path.join(DIR, "installer.bmp")
|
||||
LICENSE=os.path.join(DIR, "license.txt")
|
||||
OUTFILE=os.path.basename(DIR)
|
||||
if (VER!=""): OUTFILE=OUTFILE+"-"+VER
|
||||
OUTFILE=os.path.abspath(OUTFILE+".exe")
|
||||
INSTALLDIR='C:\\'+os.path.basename(GAME)
|
||||
INSTALLDIR='C:\\'+os.path.basename(DIR)
|
||||
if (VER!=""): INSTALLDIR=INSTALLDIR+"-"+VER
|
||||
COMPRESS="lzma"
|
||||
if (OPTIONS["fast"]): COMPRESS="zlib"
|
||||
if (OPTIONS["pyc"]): MAIN=NAME+".pyc"
|
||||
else: MAIN=NAME+".py"
|
||||
if (OPTIONS["pyc"]): MAIN="main.pyc"
|
||||
else: MAIN="main.py"
|
||||
|
||||
def PrintFileStatus(label, file):
|
||||
if (os.path.exists(file)):
|
||||
|
|
@ -116,21 +119,21 @@ def PrintFileStatus(label, file):
|
|||
else:
|
||||
print "%-15s: %s (MISSING)"%(label, file)
|
||||
|
||||
PrintFileStatus("Game", GAME)
|
||||
PrintFileStatus("Dir", DIR)
|
||||
print "%-15s: %s"%("Name", NAME)
|
||||
print "%-15s: %s"%("Start Menu", SMDIRECTORY)
|
||||
PrintFileStatus("Main", os.path.join(GAME, MAIN))
|
||||
PrintFileStatus("Main", os.path.join(DIR, MAIN))
|
||||
PrintFileStatus("Icon", ICON)
|
||||
PrintFileStatus("Bitmap", BITMAP)
|
||||
PrintFileStatus("License", LICENSE)
|
||||
print "%-15s: %s"%("Output", OUTFILE)
|
||||
print "%-15s: %s"%("Install Dir", INSTALLDIR)
|
||||
|
||||
if (os.path.isdir(GAME)==0):
|
||||
sys.exit("Difficulty reading "+GAME+". Cannot continue.")
|
||||
if (os.path.isdir(DIR)==0):
|
||||
sys.exit("Difficulty reading "+DIR+". Cannot continue.")
|
||||
|
||||
if (os.path.isfile(os.path.join(GAME, NAME+".py"))==0):
|
||||
sys.exit("Difficulty reading "+NAME+".py. Cannot continue.")
|
||||
if (os.path.isfile(os.path.join(DIR, "main.py"))==0):
|
||||
sys.exit("Difficulty reading main.py. Cannot continue.")
|
||||
|
||||
if (os.path.isfile(LICENSE)==0):
|
||||
LICENSE=os.path.join(PANDA,"LICENSE")
|
||||
|
|
@ -150,7 +153,7 @@ print "Copying the game to "+TMPDIR+"..."
|
|||
if (os.path.exists(TMPDIR)):
|
||||
try: shutil.rmtree(TMPDIR)
|
||||
except: sys.exit("Cannot delete "+TMPDIR)
|
||||
try: shutil.copytree(GAME, TMPDIR)
|
||||
try: shutil.copytree(DIR, TMPDIR)
|
||||
except: sys.exit("Cannot copy game to "+TMPDIR)
|
||||
|
||||
##############################################################################
|
||||
|
|
|
|||
|
|
@ -804,7 +804,7 @@ class ShowBase(DirectObject.DirectObject):
|
|||
def makeCamera(self, win, sort = 0, scene = None,
|
||||
displayRegion = (0, 1, 0, 1), stereo = None,
|
||||
aspectRatio = None, clearDepth = 0, clearColor = None,
|
||||
lens = None, camName = 'cam'):
|
||||
lens = None, camName = 'cam', mask = None):
|
||||
"""
|
||||
Makes a new 3-d camera associated with the indicated window,
|
||||
and creates a display region in the indicated subrectangle.
|
||||
|
|
@ -828,6 +828,11 @@ class ShowBase(DirectObject.DirectObject):
|
|||
if scene != None:
|
||||
camNode.setScene(scene)
|
||||
|
||||
if mask != None:
|
||||
if (isinstance(mask, int)):
|
||||
mask = BitMask32(mask)
|
||||
camNode.setCameraMask(mask)
|
||||
|
||||
# self.camera is the parent node of all cameras: a node that
|
||||
# we can move around to move all cameras as a group.
|
||||
if self.camera == None:
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@ GraphicsBuffer(GraphicsPipe *pipe,
|
|||
GraphicsOutput *host) :
|
||||
GraphicsOutput(pipe, name, properties, x_size, y_size, flags, gsg, host)
|
||||
{
|
||||
nassertv(gsg != (GraphicsStateGuardian *)NULL);
|
||||
|
||||
#ifdef DO_MEMORY_USAGE
|
||||
MemoryUsage::update_type(this, this);
|
||||
#endif
|
||||
|
|
@ -47,6 +49,8 @@ GraphicsBuffer(GraphicsPipe *pipe,
|
|||
|
||||
_default_display_region->compute_pixels(_x_size, _y_size);
|
||||
_open_request = OR_none;
|
||||
|
||||
set_inverted(gsg->get_copy_texture_inverted());
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -325,9 +325,6 @@ add_render_texture(Texture *tex, RenderTextureMode mode,
|
|||
result._plane = plane;
|
||||
result._rtm_mode = mode;
|
||||
_textures.push_back(result);
|
||||
|
||||
nassertv(_gsg != (GraphicsStateGuardian *)NULL);
|
||||
set_inverted(_gsg->get_copy_texture_inverted());
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ PUBLISHED:
|
|||
BF_can_bind_color = 0x0040, // Need capability: bind the color bitplane to a tex.
|
||||
BF_can_bind_every = 0x0080, // Need capability: bind all bitplanes to a tex.
|
||||
BF_size_track_host = 0x0100, // Buffer should track the host size.
|
||||
BF_rtt_cumulative = 0x0200, // Buffer supports cumulative render-to-texture.
|
||||
};
|
||||
|
||||
INLINE bool is_valid() const;
|
||||
|
|
|
|||
|
|
@ -108,6 +108,7 @@ make_output(const string &name,
|
|||
if (((flags&BF_require_parasite)!=0)||
|
||||
((flags&BF_refuse_window)!=0)||
|
||||
((flags&BF_size_track_host)!=0)||
|
||||
((flags&BF_rtt_cumulative)!=0)||
|
||||
((flags&BF_can_bind_color)!=0)||
|
||||
((flags&BF_can_bind_every)!=0)||
|
||||
(properties != gsg->get_default_properties())) {
|
||||
|
|
@ -124,6 +125,7 @@ make_output(const string &name,
|
|||
((flags&BF_require_parasite)!=0)||
|
||||
((flags&BF_require_window)!=0)||
|
||||
((flags&BF_size_track_host)!=0)||
|
||||
((flags&BF_rtt_cumulative)!=0)||
|
||||
((flags&BF_can_bind_every)!=0)||
|
||||
(properties != gsg->get_default_properties())) {
|
||||
return NULL;
|
||||
|
|
|
|||
|
|
@ -107,6 +107,7 @@ make_output(const string &name,
|
|||
if (((flags&BF_require_parasite)!=0)||
|
||||
((flags&BF_refuse_window)!=0)||
|
||||
((flags&BF_size_track_host)!=0)||
|
||||
((flags&BF_rtt_cumulative)!=0)||
|
||||
((flags&BF_can_bind_color)!=0)||
|
||||
((flags&BF_can_bind_every)!=0)||
|
||||
(prop != gsg->get_default_properties())) {
|
||||
|
|
@ -123,6 +124,7 @@ make_output(const string &name,
|
|||
((flags&BF_require_parasite)!=0)||
|
||||
((flags&BF_require_window)!=0)||
|
||||
((flags&BF_size_track_host)!=0)||
|
||||
((flags&BF_rtt_cumulative)!=0)||
|
||||
((flags&BF_can_bind_every)!=0)||
|
||||
(prop != gsg->get_default_properties())) {
|
||||
return NULL;
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ CLP(GraphicsBuffer)(GraphicsPipe *pipe,
|
|||
_fbo = 0;
|
||||
_rb_size_x = 0;
|
||||
_rb_size_y = 0;
|
||||
_cube_face_active = 0;
|
||||
for (int i=0; i<RTP_COUNT; i++) {
|
||||
_rb[i] = 0;
|
||||
_tex[i] = 0;
|
||||
|
|
@ -244,6 +245,7 @@ rebuild_bitplanes() {
|
|||
next, GL_RGBA, Texture::F_rgba);
|
||||
next += 1;
|
||||
}
|
||||
_cube_face_active = 0;
|
||||
|
||||
glgsg->report_my_gl_errors();
|
||||
}
|
||||
|
|
@ -285,9 +287,11 @@ bind_slot(bool rb_resize, Texture **attach, RenderTexturePlane slot,
|
|||
GL_TEXTURE_2D, gtc->_index, 0);
|
||||
} else {
|
||||
glgsg->_glFramebufferTexture2D(GL_FRAMEBUFFER_EXT, attachpoint,
|
||||
GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, gtc->_index, 0);
|
||||
GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB,
|
||||
gtc->_index, 0);
|
||||
}
|
||||
_tex[slot] = tex;
|
||||
_attach_point[slot] = attachpoint;
|
||||
|
||||
// If there was a renderbuffer bound to this slot, delete it.
|
||||
if (_rb[slot] != 0) {
|
||||
|
|
@ -320,6 +324,7 @@ bind_slot(bool rb_resize, Texture **attach, RenderTexturePlane slot,
|
|||
|
||||
// Toss any texture that was connected to the slot.
|
||||
_tex[slot] = 0;
|
||||
_attach_point[slot] = attachpoint;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -401,7 +406,27 @@ end_frame(FrameMode mode) {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
void CLP(GraphicsBuffer)::
|
||||
select_cube_map(int cube_map_index) {
|
||||
GLCAT.error() << "select_cube_map not implemented yet.\n";
|
||||
if (cube_map_index == _cube_face_active) {
|
||||
return;
|
||||
}
|
||||
_cube_face_active = cube_map_index;
|
||||
|
||||
CLP(GraphicsStateGuardian) *glgsg;
|
||||
DCAST_INTO_V(glgsg, _gsg);
|
||||
|
||||
for (int i=0; i<RTP_COUNT; i++) {
|
||||
Texture *tex = _tex[i];
|
||||
if ((tex == 0) ||
|
||||
(tex->get_texture_type() != Texture::TT_cube_map)) {
|
||||
continue;
|
||||
}
|
||||
TextureContext *tc = tex->prepare_now(glgsg->get_prepared_objects(), glgsg);
|
||||
nassertv(tc != (TextureContext *)NULL);
|
||||
CLP(TextureContext) *gtc = DCAST(CLP(TextureContext), tc);
|
||||
glgsg->_glFramebufferTexture2D(GL_FRAMEBUFFER_EXT, _attach_point[i],
|
||||
GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB + cube_map_index,
|
||||
gtc->_index, 0);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -435,6 +460,11 @@ open_buffer() {
|
|||
void CLP(GraphicsBuffer)::
|
||||
close_buffer() {
|
||||
|
||||
_active = false;
|
||||
if (_gsg == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Get the glgsg.
|
||||
CLP(GraphicsStateGuardian) *glgsg;
|
||||
DCAST_INTO_V(glgsg, _gsg);
|
||||
|
|
@ -458,6 +488,5 @@ close_buffer() {
|
|||
|
||||
// Release the Gsg
|
||||
_gsg.clear();
|
||||
_active = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,15 +26,27 @@
|
|||
// The glGraphicsBuffer is based on the OpenGL
|
||||
// EXT_framebuffer_object and ARB_draw_buffers extensions.
|
||||
// This design has significant advantages over the
|
||||
// older wglGraphicsBuffer and glxGraphicsBuffer.
|
||||
// older wglGraphicsBuffer and glxGraphicsBuffer:
|
||||
//
|
||||
// * Can export depth and stencil.
|
||||
// * Supports auxiliary bitplanes.
|
||||
// * Supports non-power-of-two padding.
|
||||
// * Supports tracking of host window size.
|
||||
// * Supports cumulative render-to-texture.
|
||||
// * Faster than pbuffers.
|
||||
// * Can render onto a texture without clearing it first.
|
||||
//
|
||||
// Some of these deserve a little explanation.
|
||||
// Auxiliary bitplanes are additional bitplanes above
|
||||
// and beyond the normal depth,stencil,color. One can
|
||||
// use them to render out multiple textures in a single
|
||||
// pass. Cumulative render-to-texture means that if
|
||||
// don't clear the buffer, then the contents of the
|
||||
// buffer will be equal to the texture's previous
|
||||
// contents. This alo means you can meaningfully
|
||||
// share a bitplane between two buffers by binding
|
||||
// the same texture to both buffers.
|
||||
//
|
||||
// If either of the necessary OpenGL extensions is not
|
||||
// available, then the glGraphicsBuffer will not be
|
||||
// available (although it may still be possible to
|
||||
|
|
@ -72,8 +84,10 @@ private:
|
|||
GLuint _fbo;
|
||||
int _rb_size_x;
|
||||
int _rb_size_y;
|
||||
int _cube_face_active;
|
||||
PT(Texture) _tex[RTP_COUNT];
|
||||
GLuint _rb[RTP_COUNT];
|
||||
GLenum _attach_point[RTP_COUNT];
|
||||
|
||||
public:
|
||||
static TypeHandle get_class_type() {
|
||||
|
|
|
|||
|
|
@ -300,6 +300,7 @@ make_output(const string &name,
|
|||
if (((flags&BF_require_parasite)!=0)||
|
||||
((flags&BF_refuse_window)!=0)||
|
||||
((flags&BF_size_track_host)!=0)||
|
||||
((flags&BF_rtt_cumulative)!=0)||
|
||||
((flags&BF_can_bind_color)!=0)||
|
||||
((flags&BF_can_bind_every)!=0)) {
|
||||
return NULL;
|
||||
|
|
@ -333,6 +334,7 @@ make_output(const string &name,
|
|||
((flags&BF_require_parasite)!=0)||
|
||||
((flags&BF_require_window)!=0)||
|
||||
((flags&BF_size_track_host)!=0)||
|
||||
((flags&BF_rtt_cumulative)!=0)||
|
||||
((flags&BF_can_bind_every)!=0)) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -132,9 +132,15 @@ reset() {
|
|||
// It's Mesa, therefore probably a software context.
|
||||
if (!software) {
|
||||
glxdisplay_cat.error()
|
||||
<< "Using GL renderer " << _gl_renderer << "; it is probably a software renderer.\n";
|
||||
<< "The application requested harware acceleration, but your OpenGL\n";
|
||||
glxdisplay_cat.error()
|
||||
<< "To allow use of this display add FM_software to your frame buffer mode.\n";
|
||||
<< "driver, " << _gl_renderer << ", only supports software rendering.\n";
|
||||
glxdisplay_cat.error()
|
||||
<< "You need to install a hardware-accelerated OpenGL driver, or,\n";
|
||||
glxdisplay_cat.error()
|
||||
<< "if you actually *want* to use a software renderer, then\n";
|
||||
glxdisplay_cat.error()
|
||||
<< "change the word 'hardware' to 'software' in the Config.prc file.\n";
|
||||
_is_valid = false;
|
||||
}
|
||||
frame_buffer_mode = (frame_buffer_mode | FrameBufferProperties::FM_software) & ~FrameBufferProperties::FM_hardware;
|
||||
|
|
|
|||
|
|
@ -144,6 +144,7 @@ make_output(const string &name,
|
|||
((flags&BF_require_window)!=0)||
|
||||
((flags&BF_size_track_host)!=0)||
|
||||
((flags&BF_can_bind_every)!=0)||
|
||||
((flags&BF_rtt_cumulative)!=0)||
|
||||
(properties != gsg->get_default_properties())) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@ make_output(const string &name,
|
|||
if (((flags&BF_require_parasite)!=0)||
|
||||
((flags&BF_refuse_window)!=0)||
|
||||
((flags&BF_size_track_host)!=0)||
|
||||
((flags&BF_rtt_cumulative)!=0)||
|
||||
((flags&BF_can_bind_color)!=0)||
|
||||
((flags&BF_can_bind_every)!=0)) {
|
||||
return NULL;
|
||||
|
|
@ -169,6 +170,7 @@ make_output(const string &name,
|
|||
((flags&BF_require_parasite)!=0)||
|
||||
((flags&BF_require_window)!=0)||
|
||||
((flags&BF_size_track_host)!=0)||
|
||||
((flags&BF_rtt_cumulative)!=0)||
|
||||
((flags&BF_can_bind_every)!=0)) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue