Re: C# + DIrect3D
От: MatFiz Россия  
Дата: 13.01.06 09:21
Оценка:
Здравствуйте, SPP, Вы писали:

SPP> public struct MeshInfo

SPP> {
SPP> private Mesh mesh;
SPP> private Material[] meshMaterials;
SPP> private Texture[] meshTextures;
SPP> public Mesh Model { get { return mesh; } set { mesh = value; } }
SPP> public Material[] Materials { get { return meshMaterials; } set { meshMaterials = value; } }
SPP> public Texture[] Textures { get { return meshTextures; } set { meshTextures = value; } }
SPP> }

SPP> public class MainClass : System.Windows.Forms.Form

SPP> {
SPP> public MeshInfo[] meshes = new MeshInfo[_meshesCount];
SPP> public int meshIndex = 0;
SPP>/* ... */
SPP> private void AddPredmet()
SPP> {

SPP> ExtendedMaterial[] mtrl = null;


SPP> // Загрузка меша

SPP>/* на этой строчке выдает Exception */
SPP> meshes[meshIndex].Model = Mesh.FromFile(path, MeshFlags.Managed, device, out mtrl);

SPP> // Сохраняем материалы, если они есть

SPP> if ((mtrl != null) && (mtrl.Length > 0))
SPP> {
SPP> meshes[meshIndex].Materials = new Material[mtrl.Length];
SPP> meshes[meshIndex].Textures = new Texture[mtrl.Length];

SPP> // Сохраняем текстуры, если есть

SPP> for (int i = 0; i < mtrl.Length; i++)
SPP> {
SPP> meshes[meshIndex].Materials[i] = mtrl[i].Material3D;
SPP> if ((mtrl[i].TextureFilename != null) && (mtrl[i].TextureFilename != string.Empty))
SPP> {
SPP> meshes[meshIndex].Textures[i] = TextureLoader.FromFile(device, @"..\..\" + mtrl[i].TextureFilename);
SPP> }
SPP> }
SPP> }
SPP> }
SPP>}


SPP>При выхове функции AddPredmet() выдается exception:


SPP>An unhandled exception of type 'System.NullReferenceException' occurred in Project.exe

SPP>Additional information: Object reference not set to an instance of an object.

SPP>Как я понимаю, это потому, что не инициализирована переменная meshes. Только как это сделать? Или может в чем другом дело?


Массив создать надо сначала.
Размер ты должен знать.
How are YOU doin'?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.