3D Netz mit texcoord
-
Hallo,
ich möchte in GL ein Mesh auslegen, der aus GL_TRIANGLES (dreiecken)
besteht. Dazu verwende ich einen Generator der es mit Quads herstellt.
Leider wird auch die Textur zerkachelt..Hat jemand einen CodeSnips parat der das leistet, es ist für eine art
Landscape, um Kamerabilder in 3D abzubilden.Vielen Dank für Hinweise.
Hier ein Beispiel mit Quads, was aber nicht gefällig ist.
void CGLprimitives::Plane(int TexId,const CPlane &pln,float texsplit, float texrot) { glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D,TexId); glBegin(GL_QUADS); glTexCoord2f(1.0f*texsplit, 0.0f*texsplit); glVertex3fv((GLfloat *)&pln.v0); glTexCoord2f(1.0f*texsplit, 1.0f*texsplit); glVertex3fv((GLfloat *)&pln.v1); glTexCoord2f(0.0f*texsplit, 1.0f*texsplit); glVertex3fv((GLfloat *)&pln.v2); glTexCoord2f(0.0f*texsplit, 0.0f*texsplit); glVertex3fv((GLfloat *)&pln.v3); glEnd(); glDisable(GL_TEXTURE_2D); }
-
Was genau meinst du mit "zerkachelt"? Du musst eben die Texturkoordinaten richtig wählen...
-
Hallo , danke für deine Antwort, einige Probleme habe ich gelöt,
leider kann ich nicht korrekt auf mehrere Trianglestrip zeilen
meine Textur legen, ich habe da eine codestrecke die von1-weite und von 1 bis höhe läuft, wie genau müssten denn nun
die passenden texturcoordinaten aussehen, im beispiel sehe
ich zwar die textur sie ist aber nicht in der korekten Kachelung.for(float y(1) ; y < m_height-2; y++) { glBegin(GL_TRIANGLE_STRIP); for(float x(1) ;x < m_width-1; x++) { CVertex v1((startX + x),(startY - (y+1)),GetHVal(x,y+1)); CVertex v2((startX + x),(startY - (y+0)),GetHVal(x,y+0)); CVertex n1 = (CrossProduct(x,y+1, x-1,y+1 ,x,y+2)+ CrossProduct(x,y+1, x, y+2 ,x+1,y+1)+ CrossProduct(x,y+1, x+1,y+1 ,x,y)+ CrossProduct(x,y+1, x, y ,x-1,y+1)).Normalize(); n1.z = - n1.z; CVertex n2 = (CrossProduct(x,y, x-1,y,x ,y+1)+ CrossProduct(x,y, x, y+1 ,x+1,y)+ CrossProduct(x,y, x+1,y,x ,y-1)+ CrossProduct(x,y, x, y-1 ,x-1,y)).Normalize(); n2.z = - n2.z; glNormal3fv((float *)&n1); if(texid>0)glTexCoord3f(x/m_width,y+1/m_height,1); glVertex3fv((float *)&v1); glNormal3fv((float *)&n2); if(texid>0)glTexCoord3f(x/m_width,y+0/m_height,1); glVertex3fv((float *)&v2); } glEnd(); }
-
Karsten Schulz schrieb:
1-weite und von 1 bis höhe läuft, wie genau müssten denn nun die passenden texturcoordinaten aussehen[...]
Das hängt davon ab wie genau du deine Textur auf dein Netz mappen willst...
Karsten Schulz schrieb:
[...] im beispiel sehe ich zwar die textur sie ist aber nicht in der korekten Kachelung.
Definiere "nicht korrekt"
EDIT: Ich würde mal vermuten, dein Fehler ist eine fehlende () in deiner Texcoord-Berechnung
-
Dieser Beitrag wurde gelöscht!