Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Dez 22, 2024 05:03

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Dez 05, 2012 20:22 
Offline
DGL Member

Registriert: Di Okt 18, 2011 23:12
Beiträge: 5
Hallo!

Ich bastel grade ein kleines Progrämmchen und wollte soeben Licht hinzufügen, als ich feststellte: es passiert michts!

Nach einigem testen habe ich nun heraus gefunden, dass das Licht durchaus Verwendet wird, wenn ich die texturen weg lasse.

Aber erst einmal ein wenig Code (LWJGL und Java)
Code:
  1.  
  2.         glLoadIdentity();
  3.         glClearColor(0.8f, 0.8f, 0.9f, 1.0f);
  4.         glEnable(GL_DEPTH_TEST);
  5.         glEnable(GL_LIGHTING);
  6.         glEnable(GL_LIGHT0);
  7.         glLight(GL_LIGHT0, GL_POSITION, BufferHelper.asFlippedFloatBuffer(new float[]{1, 5, 2, 0}));
  8.         glLight(GL_LIGHT0, GL_DIFFUSE, BufferHelper.asFlippedFloatBuffer(new float[]{1, 1, 1, 1f}));
  9.         glLight(GL_LIGHT0, GL_AMBIENT, BufferHelper.asFlippedFloatBuffer(new float[]{1, 1, 1, 1f}));
  10.         glMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE, BufferHelper.asFlippedFloatBuffer(new float[]{1f, 1f, 1f, 1}));
  11.         glMaterial(GL_FRONT_AND_BACK, GL_AMBIENT, BufferHelper.asFlippedFloatBuffer(new float[]{0f, 0f, 0f, 1}));
  12.         glMaterial(GL_FRONT_AND_BACK, GL_EMISSION, BufferHelper.asFlippedFloatBuffer(new float[]{0, 0, 0, 1}));
  13.         glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0f);
  14.         glMaterial(GL_FRONT_AND_BACK, GL_SPECULAR, BufferHelper.asFlippedFloatBuffer(new float[]{0, 0, 0, 1}));
  15.         //rendern der Displayliste
  16.  



In der Displayliste kommt an sich nur noch sowas:
Code:
  1.         glEnable(GL_TEXTURE_2D);
  2.         TextureManager.instance.bindTexture(textId);
  3.         glBegin(GL_QUADS);
  4.         //Top
  5.         if (chunk.sideNeedRender(4, cx, y, cz)) //+z
  6.         {
  7.             glNormal3f(0, 0, 1);
  8.             glColor3f(1, 0, 0);
  9.             glTexCoord2f(texMX, texMY);//Front
  10.             glVertex3f  (ax-m,  ay-m,   az+m);
  11.             glTexCoord2f(texMaX, texMY);
  12.             glVertex3f  (ax+m,  ay-m,   az+m);
  13.             glTexCoord2f(texMaX, texMaY);
  14.             glVertex3f  (ax+m,  ay+m,   az+m);
  15.             glTexCoord2f(texMX, texMaY);
  16.             glVertex3f  (ax-m,  ay+m,   az+m);
  17.         } //...

Der Texturmanager ist selber geschrieben, macht aber auch nur ein
Code:
  1. glBindTexture(GL_TEXTURE_2D,textureId);

Wie gesagt, die Texturen werden korrekt gerendert, nur wird weder eine Farbe,noch das Licht darauf angewandt.

Hat von euch jemand eine Ahnung, was hier das Problem sein könnte?
Braucht ihr noch mehr Code?
Irgendwelche Anregungen?

Grüße, Teekeks


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Dez 05, 2012 20:42 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Sicher, dass alle deine Flächen in die selbe Richtung zeigen?
Wenn Lichtposition und Normale der Fläche konstant sind kann da IMHO nicht viel passieren. Es sei denn man ändert den Betrachtungswinkel auf die Fläche.
Lass testweise einfach mal die Lichtquelle um eine Position rotieren und/oder gib den Normalen mal zufällige (normalisierte) Werte.

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Dez 05, 2012 20:53 
Offline
DGL Member

Registriert: Di Okt 18, 2011 23:12
Beiträge: 5
Hallo!

Das ganze ist an sich nur eine Seite von vielen Würfeln, die Normalen sind alle korrekt gesetzt.
Ohne die texturen ist ja auch alles in Ordnung.

Hier mal Bilder zur verdeutlichung:
Mit Textur: http://imgur.com/uXhVh
Ohne Textur: http://imgur.com/swrAX

Für das zweite Bild habe ich nur die Zeilen
Code:
  1. glEnable(GL_TEXTURE_2D);
  2. TextureManager.instance.bindTexture(textId);

Auskommentiert.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Dez 05, 2012 22:02 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Du nutzt wahrscheinlich GL_REPLACE anstatt GL_MODULATE als combiner.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Dez 05, 2012 22:16 
Offline
DGL Member

Registriert: Di Okt 18, 2011 23:12
Beiträge: 5
Tatsächlich!
Code:
  1. glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

Stand beim ersten Initialize.

Jetzt geht es!

Danke vielmals!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.025s | 15 Queries | GZIP : On ]