Suchergebnisse
Suchergebnisse 1-20 von insgesamt 51.
Vielen Dank dot ich glaube das war aufklärend genug um mich auf intensive Fehlersuche zu begeben
Sprechen wir hier von dem Zugriff auf das 0te Feld des Mesharrays oder von dem Anfordern des Speichers bei "face"?
Das heisst Mesh[0].face & vtx existieren überhaupt nicht? Wenn ich dich richtig verstanden habe verstehe ich bloss noch nicht warum das ganze mit .vtx funktioniert.
Hi, ich habe ein Problem mit dem Anfordern von neuem Speicher. Hier schnell mal ein paar Codeschnipsel. C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 struct Face { unsigned short p1,p2,p3; }; struct ObjMesh { ....Face* face; }; ObjMesh* Mesh; Hier fordere ich das erste mal Speicher an. Das klappt auch noch reibungslos. C-/C++-Quelltext 1 Mesh = new ObjMesh[nMesh]; Hier ist es schon weniger lustig C-/C++-Quelltext 1 Mesh[0].face = new Face[9]; Denn folgende Fehlermeldung erscheint. Zitat Dies kann auf...
Hi Leute, mich quält mal wieder ein Problem. Ich habe Schwierigkeiten ein Mesh aus einer Wavefrontdatei mit Texturkoordinaten zu rendern. Als Versuchskaninchen nehme ich eine simple Fläche (4Vertices). Die Indexdaten sehen wie folgt aus: C-/C++-Quelltext 1 2 f 1/1 4/2 3/3 f 1/1 3/3 2/4 Da ich die Funktion DrawIndexed() zum rendern verwende werden die Vertices also in dieser Reihenfolge gerendert: 1,4,3, 1,3,2. Natürlich geht das mit den Texturkoordinaten dann nicht mehr auf, da diese eine andere...
Ich glaub mich tritt ein Pferd! Vielen Dank für deine Hilfe dot, die Fläche zeigt sich jetzt tatsächlich mal auf dem Monitor <!--splitLinkBegin--><!--splitLinkEnd--><!--noLinkBegin-->ExternesOriginalbildanzeigen(Link)<!--noLinkEnd--> Zitat von »dot« Und darüber id.ByteWidth = sizeof( indices ) * numIndices; und vor allem darüber indices = new int[sizeof(numIndices)]; solltest du nochmal gaaaanz genau nachdenken Ich zerbreche mir morgen nochmal den Kopf darüber aber ich glaub ich weiss was ich fa...
C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 int* indices; ... int* IdxPtr = objModel.GetIndices(); indices = new int[sizeof(numIndices)]; for( int i = 0; i < numIndices; i++) { indices[i] = *(IdxPtr + i); } C-/C++-Quelltext 1 2 3 4 5 6 UINT stride = sizeof( VertexPos ); UINT offset = 0; pd3dImmediateContext->IASetVertexBuffers( 0, 1, &g_pVertexBuffer, &stride, &offset ); pd3dImmediateContext->IASetIndexBuffer( g_pIndexBuffer, DXGI_FORMAT_R16_UINT, 0 );
Die Frage hab ich mir auch schon mal gestellt Ob da wohl Daten verloren gehen weil kein Platz besteht? Ich nehme an wir sprechen vom Vertex und dem Indexbuffer. Hier der Code: 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 24 25 26 27 28 29 30 31 32 33 34 35 D3D11_BUFFER_DESC vertexDesc; ZeroMemory( &vertexDesc, sizeof( vertexDesc ) ); vertexDesc.Usage = D3D11_USAGE_DEFAULT; vertexDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; vertexDesc.ByteWidth = sizeof( VertexPos ) ...
Klingt beruhigend. Hier der Code meiner Renderfunktion. Sry für die Unordnung im Quelltext, ich hab SimpleSample jetzt glaub ich schon 100 mal umgeschrieben und nicht auf die Übersicht aufgepasst. 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 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 float ClearColor[4] = { 0.176f, 0.196f, 0.667f, 0.0f }; ID3D11RenderTargetView* pRTV = DXUTGetD3D11RenderTargetView(); ID3D11De...
Ahhh klar. Ich habe beim Exporter nicht angegeben ob das Mesh in einer Dreiecksliste gespeichert wird. Nun ich wage zu behaupten, dass ich es jetzt verstehe Also im Überblick läuft das ganze dann so ab: - Vertexbuffer mit den Vertices füllen, ohne die Reihenfolge der Punkte zu manipulieren. (Bei einem Rechteck wären wir dann auf 4 Vertices) - Indexbuffer füllen. X-1 da der Buffer ja bei "0" anfängt. (Ich habe das Rechteck jetzt in eine Dreicksliste gepackt und die Indices lauten im Indexbuffer: ...
Vielen Dank dot, das war absolut verständlich und meine Verwirrung hat sich bis auf einen Punkt(Vertex) gelegt. Ich verstehe jetzt bloss noch nicht wie ich aus den Daten der Datei (f 1/4/3/2) nun 6 Indices basteln soll. Scheint als wäre ich schwer von Begriff...
Zitat von »Sylence« Musst du nicht noch das Layout für die Vertexdaten angeben? C-/C++-Quelltext 1 2 3 4 5 6 7 const D3D11_INPUT_ELEMENT_DESC layout[] = { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 24, D3D11_INPUT_PER_VERTEX_DATA, 0 } }; Zitat von »Moe« Wie groß ist numVertices? Als welche Geometrie renderst Du? Mir kommt e...
Hmm wenn der gemeinte Speicherbereich "vertices[]" ist dann verstehe ich nicht wie ich da rausrutschen kann. Habe ich dann den Vertexbuffer nicht korrekt angelegt? Vertexstruktur: C-/C++-Quelltext 1 2 3 4 5 struct VertexPos { XMFLOAT3 pos; XMFLOAT2 tex0; }; Vertexbuffer: C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 D3D11_BUFFER_DESC vertexDesc; ZeroMemory( &vertexDesc, sizeof( vertexDesc ) ); vertexDesc.Usage = D3D11_USAGE_DEFAULT; vertexDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER; vertexDesc.ByteWidth = si...
Geometrie: D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST Der Code sieht so ungefähr so aus: C-/C++-Quelltext 1 2 3 for( int i = 0; i < numVertices; i++) { vertices[indices[i] - 1].pos = XMFLOAT3(*(vertsPtr + 0), *(vertsPtr + 1), *(vertsPtr + 2) ); Damit habe ich das x-1Problem wohl umgangen. Liegt der Fehler eurer Meinung nach also noch immer bei den Indices? Dann weiss ich halt wenigstens wo ich suchen muss.
Nunja, das frage ich mich auch gerade... Eine simples Rechteck versuche ich zu rendern und das Ergebnis sieht so aus: <!--splitLinkBegin--><!--splitLinkEnd--><!--noLinkBegin-->ExternesOriginalbildanzeigen(Link)<!--noLinkEnd--> Ich hab alle Vertex und Indexdaten mit meiner Logbuchfunktion überprüfen lassen und die scheinen korrekt angekommen zu sein. Wie es aussieht muss ich wohl noch tiefer graben
Tue ich auch nicht sry. Mit Indexbuffer meinte ich die Indexinformationen die in der Datei gespeichert sind, welche ich anstelle eines Indexbuffers verwende um meine Vertexstruktur in der richtigen Reihenfolge zu füllen. Vielen Dank für den Tipp
Nehmen wir zum Beispiel ein Quadrat, also 4 vertices. Der Indexbuffer würde dann so aussehen: 1,4,3,2. Und das ist dann wohl auch die Reihenfolge. Sollte ich recht haben hat sich mein Problem dann wohl erledigt.
Meine Erfahrung reicht leider bloss bis zu einem im Quellcode generierten Würfel. Alles andere wurde bisher hiermit C-/C++-Quelltext 1 pd3dImmediateContext->Draw(numVertices, 0); erledigt.