عرض شبكة باستخدام DirectX 9 - الاختلافات الشبكية

StackOverflow https://stackoverflow.com/questions/3413422

  •  26-09-2019
  •  | 
  •  

سؤال

هذه هو برنامجي لعرض شبكة .x. أنا قادر على عرض الشبكة Tiger.x لكن غير قادر على العرض ball.x. ما هو الفرق بين الشبكات؟ هل هناك شيء يجب أن أتعامل معه في الكود؟ لكنني قادر على عرض كل من الشبكات باستخدام مشاهدي الشبكات القياسية مثل تلك التي تأتي مع DirectX SDK.

شكرًا.

هل كانت مفيدة؟

المحلول 2

الشبكة ليس لديها أي مشكلة ولكن الرأي. تم تكبيره جدًا لعرض الصورة. لقد عرضت الصورة باستخدام المصفوفة التالية وتمكنت من عرض الشبكة بشكل صحيح.

//Set Projection
D3DXMATRIXA16 matProj(1.0,0.0,0.0,0.0,
                      0.0,1.0,0.0,0.0,
                      0.0,0.0,1.0,0.0,
                      0.0,0.0,0.0,150.0);

نصائح أخرى

ولكن غير قادر على عرض ball.x.

السؤال غير واضح. هل تحميل الشبكة؟ هل تحتوي على رؤوس/وجوه؟ أو ربما يعطل التطبيق؟ أو فشل التحميل؟

ما هو الفرق بين الشبكات؟

الفرق هو أن الشبكة الثانية (ball.x) لا تتضمن "قوالب".

أي هذا الجزء:

template Header {
 <3D82AB43-62DA-11cf-AB39-0020AF71E433>
 WORD major;
 WORD minor;
 DWORD flags;
}

template Vector {
 <3D82AB5E-62DA-11cf-AB39-0020AF71E433>
 FLOAT x;
 FLOAT y;
 FLOAT z;
}

template Coords2d {
 <F6F23F44-7686-11cf-8F52-0040333594A3>
 FLOAT u;
 FLOAT v;
}

template Matrix4x4 {
 <F6F23F45-7686-11cf-8F52-0040333594A3>
 array FLOAT matrix[16];
}

template ColorRGBA {
 <35FF44E0-6C7C-11cf-8F52-0040333594A3>
 FLOAT red;
 FLOAT green;
 FLOAT blue;
 FLOAT alpha;
}

template ColorRGB {
 <D3E16E81-7835-11cf-8F52-0040333594A3>
 FLOAT red;
 FLOAT green;
 FLOAT blue;
}

template IndexedColor {
 <1630B820-7842-11cf-8F52-0040333594A3>
 DWORD index;
 ColorRGBA indexColor;
}

template Boolean {
 <4885AE61-78E8-11cf-8F52-0040333594A3>
 WORD truefalse;
}

template Boolean2d {
 <4885AE63-78E8-11cf-8F52-0040333594A3>
 Boolean u;
 Boolean v;
}

template MaterialWrap {
 <4885AE60-78E8-11cf-8F52-0040333594A3>
 Boolean u;
 Boolean v;
}

template TextureFilename {
 <A42790E1-7810-11cf-8F52-0040333594A3>
 STRING filename;
}

template Material {
 <3D82AB4D-62DA-11cf-AB39-0020AF71E433>
 ColorRGBA faceColor;
 FLOAT power;
 ColorRGB specularColor;
 ColorRGB emissiveColor;
 [...]
}

template MeshFace {
 <3D82AB5F-62DA-11cf-AB39-0020AF71E433>
 DWORD nFaceVertexIndices;
 array DWORD faceVertexIndices[nFaceVertexIndices];
}

template MeshFaceWraps {
 <4885AE62-78E8-11cf-8F52-0040333594A3>
 DWORD nFaceWrapValues;
 Boolean2d faceWrapValues;
}

template MeshTextureCoords {
 <F6F23F40-7686-11cf-8F52-0040333594A3>
 DWORD nTextureCoords;
 array Coords2d textureCoords[nTextureCoords];
}

template MeshMaterialList {
 <F6F23F42-7686-11cf-8F52-0040333594A3>
 DWORD nMaterials;
 DWORD nFaceIndexes;
 array DWORD faceIndexes[nFaceIndexes];
 [Material]
}

template MeshNormals {
 <F6F23F43-7686-11cf-8F52-0040333594A3>
 DWORD nNormals;
 array Vector normals[nNormals];
 DWORD nFaceNormals;
 array MeshFace faceNormals[nFaceNormals];
}

template MeshVertexColors {
 <1630B821-7842-11cf-8F52-0040333594A3>
 DWORD nVertexColors;
 array IndexedColor vertexColors[nVertexColors];
}

template Mesh {
 <3D82AB44-62DA-11cf-AB39-0020AF71E433>
 DWORD nVertices;
 array Vector vertices[nVertices];
 DWORD nFaces;
 array MeshFace faces[nFaces];
 [...]
}

template FrameTransformMatrix {
 <F6F23F41-7686-11cf-8F52-0040333594A3>
 Matrix4x4 frameMatrix;
}

IE قوالب/إعلانات الهيكل.

أيضا ، في Ball.x Mesh جزء من التسلسل الهرمي للإطارات. في Tiger.x ليس كذلك ، ويتم تخزينه على المستوى الأعلى من التسلسل الهرمي.

لقد مر وقت منذ آخر مرة استخدمت فيها ملف *. x مباشرة ، ولكن على حد علمي ، ستحتاج إلى تضمين قوالب لجميع القوالب "غير القياسية" في ملف. IE إذا كان الملف يستخدم كائنًا يحتوي على قالب لم يتم تسجيله باستخدام طريقة registerTemplates لـ ID3DXFile أو IDIRECTXFILE ، فلن يتم تحميل الملف إذا لم يتم كتابة القالب في بداية الملف. حاول إضافة تعريفات قالب لكل هيكل مشبوه في ball.x ، حتى تجد الجاني. سأبدأ بـ "رأس".

إذا كانت المشكلة بسبب التسلسل الهرمي ، فستحتاج إلى تجربة طريقة تحميل أخرى.

باستخدام مشاهدين شبكات قياسية مثل تلك التي تأتي مع DirectX SDK.

AFAIK ، مشاهد شبكة يأتي مع رمز المصدر. اقرأ المصدر وانظر كيف يعمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top