hi. i just wrote an answer, then the phone-jack plugged itself out of my modem- connector, and it was gone. i hope i can recall everything.
Zitiere chris clepper cclepper@artic.edu:
hi all.
just commited one or two changes to the cvs.
- Pixes/pix_texture now has automatic yuv2rgb conversion (on
non-mac's -- i couldn't get my nvidia to texture yuv422-maps correctly)
that's too bad. without being able to upload the yuv texture a fair amount of the speed gain is lost.
which is true, but it should have been read: "i couldn't yet get my nvidia to texture yuv422-maps" (note the *yet*) and i haven't yet found any(!) documentation. however, there is the speed gain that comes from the mere smaller amount of data. and at least, all the yuv things do work at least without too much hazzle.
it sort of defeats the purpose of runtime checking if you have to add compiler -D options to get it to work for each check. that's why that code is in there. would a solution be to disable runtime checks on Windows and Linux? on linux you can check for this in the configure script but I don't know how you would get around this for binaries on Windows (apart from having multiple versions for each vendor, ugh). surely the game developers get around this because if MS only uses GL 1.1 then there would be no point in developing games like Unreal or Doom or high-end modelling apps on Windows.
i think you hae got something wrong. it's simple: differentiate between compilation time and runtime. compilation-time: all the defines i am using for the ifdefs merely come from the GL/gl.h-headers, so there is no need for "-D" flags. i just cannot use "glEnable(GL_TEXTURE_RECTANGLE_NVX)" if i do not have the nvidia-openGL-headers installed. so i have to ifdef it (and i think it is very sophisticated to ifdef it with GL_TEXTURE_RECTANGLE_NVX) run-time: checks for openGL-extensions work very well under linux (and i guess under windows too, otherwise the whole openGL-standard would be pointless in redmont). but unfortunately i can (successfully) check for extensions at runtime, although they have not been present during compilation. for instance, if i do not use the nvidia-openGL-headers, a check for GL_NV_texture_rectangle (or whatever it is called, cannot remember now exactly) will still return "1" if you are using a recent nvidia-driver. but then GemMan::rectangle_supported is true, which will lead to execution of some code (in pix_texture) that is plainly producing unwanted results, like black textures. so one solution would be to check for the extension *and* #ifdef all the rectangle-code in pix_texture. the other one (which is easier to add later and easier to read anytime (because #ifdef's are not really code-reader-friendly) is to check only for a certain extension if the feature is supported at compilation time. that's why i have #ifdef'ed some parts in GemMan.cpp
furthermore: please do not remove #ifdef's if they do not break anything. if they do, please add some comment in the code why you don't want it there.
generally i don't like prepocessor-defines and only add them, if i need it to compile.
- Copied yuv/[yuv_emboss] to Pixes/[pix_emboss] (to have one true
yuv-effect for testing) however, that was what i meant in one of my previous mails: yuv2pix is not yet finished since there are a lot of yuv-effects...
why yuv_emboss? it doesn't really work so well if i recall...;)
yes, i noticed, that it did something i didn't really expect...
How do you handle installation ?
that's the tricky part. i would like to have an installer script for OSX too, which could be done via unix script or AppleScript.
maybe unix-shell-scripts would be better, because it's more multi-platform and it could be shared across the various un*xes. but then under linux the thing is either handled by "make install" or the package-manager (which refers to "make install"
i guess it's ok to have those calls in filmNEW, they just require ifdefs to keep things straight. i put an ifdef in pix_filmNEW since i'm not compiling the non-OSX classes.
all the classes should well compile under all OS's (although the preprocesser would maybe strip them to the plain dummy class film (whÃch wouldn't be able to load anything) but it is true that i haven't quite done it that way, but made lot's of #ifdef's around the lib-dependent code.
mfg.as.rd IOhannes
Hi all,
From: zmoelnig@iem.at
so one solution would be to check for the extension *and* #ifdef all the rectangle-code in pix_texture. the other one (which is easier to add later and easier to read anytime
(because
#ifdef's are not really code-reader-friendly) is to check only for a
certain
extension if the feature is supported at compilation time. that's why i have #ifdef'ed some parts in GemMan.cpp
It would be good if we can move towards more run-time checks and remove as many #ifdefs as possible... if we include an up-to-date version of SGI's glext.h with GEM does that mean we can rely on having all the openGL symbols available on all platforms? I gather that this file: http://oss.sgi.com/projects/ogl-sample/ABI/glext.h should have all vendors' extensions in there.
Obviously this means you actually have to do full runtime checks for all extensions and not just use the presence of the symbol as an indication that the extension is supported.
daniel
On Wed, 14 May 2003 zmoelnig@iem.at wrote:
all the classes should well compile under all OS's (although the preprocesser would maybe strip them to the plain dummy class film (wh�ch wouldn't be able to load anything) but it is true that i haven't quite done it that way, but made lot's of #ifdef's around the lib-dependent code.
Hi,
I have taken a look at the new film classes, and I have to say that I am not fully convinced by the design.
If every platform has to go through this, it might be good to give it a little bit of thought.
The cleanest solution would be to have the decoder (film) classes register themselves with the system if they are linked in, and not call their constructors from the pix_filmNEW.
(This can be done for example by instantiating a global class in each filmXXX implementation, where the constructor registers itself)
This would save the #ifdefs that are currently in the filmXXX classes.
Guenter