Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

flux

Treue Seele

  • »flux« ist der Autor dieses Themas
  • Private Nachricht senden

1

14.11.2010, 14:23

Fehler bei Detailtextur vom Terrain

Hallo Zusammen,

ich habe mir ein Terrain erstellt. Dazu habe ich eine Heightmap für die Höhen benutzt und eine größe Textur (Colormap?), die über die gesamte Landschaft gezogen wird.
Jetzt habe ich versucht mit einer Textur für jedes Quad ein paar Details einzubauen.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
glBlendFunc(GL_SRC_ALPHA,GL_DST_ALPHA);

// alphas[i][..] = 0.5f
for(int i = 0; i < 2; i++) {
    textures[i]->bind();
    glBegin(GL_QUADS);
        glColor4f(1.0f, 1.0f, 1.0f, alphas[i][0]);
        glTexCoord2f(0.0f, 1.0f);
        glVertex3f(-2.0f, 2.0f, -2.0f);

        glColor4f(1.0f, 1.0f, 1.0f, alphas[i][1]);
        glTexCoord2f(0.0f, 0.0f);
        glVertex3f(-2.0f, -2.0f, -2.0f);

        glColor4f(1.0f, 1.0f, 1.0f, alphas[i][2]);
        glTexCoord2f(1.0f, 0.0f);
        glVertex3f(2.0f, -2.0f, -2.0f);

        glColor4f(1.0f, 1.0f, 1.0f, alphas[i][3]);
        glTexCoord2f(1.0f, 1.0f);
        glVertex3f(2.0f, 2.0f, -2.0f);
    glEnd();
}

Ergebnis:

(Link)

Textur 1: Colormap
Textur 2: Details

Das sieht ganz in Ordnung aus. Wenn ich das dann aber im Terrain mache, kommt das dabei raus: Screenshot
Die weißen Stellen sind da, wo die Erhebungen sind. Das hat wohl was mit den Alpha-Werten und der BlendFunc zu tun.
Nur weiss ich nicht, wie ich das weg bekomme.

Könnt ihr mir da helfen?

Gruß
Philipp

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

2

14.11.2010, 15:38

Ich kann in dem screenshot nicht wirklich erkennen, wie groß da so eine fläche ist, aber möglicherweise sind die einzelnen flächen zu klein, als dass du da die komplette textur einmal draufmachst... falls du das da so machst. Hast du es denn außerdem schonmal mit anderen Konstanten in der glBlendFunc versucht? z.B. dem gängigen glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA).

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

3

14.11.2010, 21:41

Sieht aus wie Oversampling -> entsprechende Filter benutzen?

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

4

15.11.2010, 08:40

Sieht aus, als hättest Du vergessen, AlphaBlending auszuschalten.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

flux

Treue Seele

  • »flux« ist der Autor dieses Themas
  • Private Nachricht senden

5

16.11.2010, 20:56

Hmm, mit dem Blending hab ich es nicht hinbekommen.
Jetzt habe ich Multitexturing benutzt. Damit läufts jetzt ganz gut =)
Ergebnis

C-/C++-Quelltext

1
2
3
4
5
6
7
8
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
texture->bind();
   
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_2D);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
detailTexture->bind();


Danke für die Antworten ;-)
Es kommen bald sicherlich neue Fragen xD

Werbeanzeige