GL_EXT_separate_specular_color

I’ve finally found a video card that says it supports this extension (when using glGetString(GL_EXTENSIONS)), but I don’t think I am doing it right because it does not seem to be working, the document at
http://oss.sgi.com/projects/ogl-sample/registry/EXT/separate_specular_color.txt

is not clear on how exactly to use it, but from what I got from it this is what I did :

#define LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8

#define SINGLE_COLOR_EXT 0x81F9
#define SEPARATE_SPECULAR_COLOR_EXT 0x81FA

glLightModeli(
LIGHT_MODEL_COLOR_CONTROL_EXT,
SEPARATE_SPECULAR_COLOR_EXT);

If this is correct, then it must be the video card doesn’t really support it, or something else is going wrong that I must look at… I’m just posting here to see if there are any answers from here first, but I am going to explore the video cards chip manufacturer to find out if they have more information as well…

BTW I am the video card is an GeForce256 WinFast.

[This message has been edited by CitiZen X (edited 02-17-2000).]

I just read the spec yesterday, and I’ve been just wondering how to actually set the secondary color… how do you do it?
(i.e. I had a quick glance at the spec, maybe I missed the point)

Did you retrieve the pointer to one of the following function :

glSecondaryColor3(bsifd ubusui)EXT(T Components).
glSecondaryColor3(bsifd ubusui)vEXT(T Components).

If yes, are you using them ???

Eric

as far as i know there’s no need to specify another specular component.

the extension uses the same specular color that comes from material/light interaction.

with this extension, you simply tell opengl to apply the specular component AFTER the texturing stage.

i believe this was a missing from the time textureing was introduced into opengl… by my point of view, when texturing is enabled, the opengl pipeline should modify itself automatically, making separate specular color the default…
however, is still a good thing to have the freedom to decide.

i think good effects can be achieved by applying the specular component before and after texturing… overexposure… metallic appearance without EM…
but with version 1.2 opengl pipeline such things can’t be obtained.

I’m so sorry, it does work, it was just a mistake in my code, I had it setup so that if it has a texture not to add a specular so that instead it would do the specular hack of redrawing the object in black and additive blend it on top, but my mistake was that it should have been an OR instead of an AND… this

if(Specular && extSeperateSpecular && !texture)
//set specular color
else
//set specular color to black

should have been like this…

if(Specular && (extSeperateSpecular | | !texture))

anyway

Eric and paolom,
that is a diffrent extension (I have forgotten what that one was) it is related to the extension I was refering to, but I just wanted to use the OpenGL pipeline to do T&L, not do T&L my self.

[This message has been edited by CitiZen X (edited 02-18-2000).]

by the way, where i can find an updated header for extended opengl ?

i found various glext.h around in the net, but no one was complete…
i also took a look ath the sgi registry, but no headers are available.

should i have to make it myself?

Dolo//\ightY

You probably will, its not a bad idea either.

To dmy,

I have started doing my glext.h myself. In fact, each time I want to try a new extension, I look at the specs (got a BIG folder with them !) and I add it. This is very easy process.

If you are using Win32, keep in mind that according to MS docs, the pointers you retrieve are not always the same from one rendering context to another (except if they have the same pixel format)…

Eric