V
Vielen Dank! Mache es jetzt so:
Normalmap als Textureunit 0
glActiveTexture GL_TEXTURE0
glBindTexture GL_TEXTURE_2D, iNormalMap
glTexEnvf GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT
glTexEnvf GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_DOT3_RGB_EXT
glTexEnvf GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE
glTexEnvf GL_TEXTURE_ENV, GL_OPERAND0_RGB_EXT, GL_SRC_COLOR
glTexEnvf GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_PRIMARY_COLOR_EXT
glTexEnvf GL_TEXTURE_ENV, GL_OPERAND1_RGB_EXT, GL_SRC_COLOR
Eigentliche Textur als Textureunit 1:
glActiveTexture GL_TEXTURE1
glBindTexture GL_TEXTURE_2D, iTexture
glEnable GL_TEXTURE_2D
glTexEnvf GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT
glTexEnvf GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE
glTexEnvf GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_PREVIOUS_EXT
glTexEnvf GL_TEXTURE_ENV, GL_OPERAND0_RGB_EXT, GL_SRC_COLOR
glTexEnvf GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_TEXTURE
glTexEnvf GL_TEXTURE_ENV, GL_OPERAND1_RGB_EXT, GL_SRC_COLOR
Dann berechne ich die Vertexfarbe so:
V = Lokale Vertexposition*Modelviewmatrix
L = Absolute Lichtposition
LN = V-L
LN = Normalisieren(LN)
VN = Vertexnormale*Modelviewmatrix(nur Rotation)
S = Punktprodukt(VN, LN)
Wenn S < 0.0 Dann S = 0.0
VertexRot = LN.X*S
VertexGrün = LN.Y*S
VertexBlau = LN.Z*S
Vllt. hilft das den ein oder anderen weiter
Was mich noch interessiert, ob man Specularmapping dadurch realisieren kann. Der berechnete Specularwert müsste doch dann zu der fertig berechneten Vertexfarbe hinzuaddiert werden ?oder
Specularmaps sind schwarzweiß, deswegen denke ich mal, das jeder Texel der Map einen Wert für glMaterialf GL_SHININESS, Wert gepräsentiert. Liege ich da richtig?
mfg olli