OpenGL RaI 2.0/MonoTouch: Linker xato

Men hozir model modelni ishga solishga harakat qilaman va yangi shader xususiyatlarini ulashda xatoga yo'l qo'yaman.

Shu nuqtada xato xabari yuboraman, lekin MonoTouch menga buni qilishga ruxsat bermaydi. Menda mavjud bo'lgan yagona narsa "OGOHLANTIRISH: Nuqlisha olishi mumkin", MonoTouch bilan muammo bo'lib tuyuladi, chunki men shablonni ishlatgan bo'ldim.

Shader kodi:


  
    
  

  
    
      
      
      <!---->
    

    


  
  
    


  

Shader "oddiy" xususiyati o'chirilganda mukammal ishlaydi. Uni qo'shsangiz, GL.LinkProgram dasturini chaqirganingizdan so'ng quyidagi xatolarni OpenOX'dan emas, balki mono (OpenGL dan emas)

App(553,0xacb752c0) malloc: *** error for object 0x1025a3c4: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

Men bu xususiyatni majburiy bajaradigan narsa borligini payqadim. Kodi:

// Bind attribute locations
for (int i = 0; i < _VertexAttributeList.Length; i++)
{
    ShaderAttribute attribute = _VertexAttributeList[i];
    GL.BindAttribLocation(_Program, i, attribute.Name);
}

"_VertexAttributeList.Length" o'rnini doimiy 1 bilan o'zgartirsangiz, u hech qanday xatosiz ishlaydi.

Cheers Feliks

1
Qo'shimcha ma'lumot olishimiz kerak. U qanday qilib bog'laydigan xato? "Build Output" ni tuzishda (agar nusxa ko'chirish/joylashtirish) muvaffaqiyatsiz bo'lsa. Qo'shimcha ma'lumotlar/tushuntirishlar bu erga joylashish uchun juda katta bo'lsa, iltimos, bugzilla.xamarin.com saytidagi xato hisobotini to'ldiring va oddiy test ishini ilova qiling.
qo'shib qo'ydi muallif poupou, manba
Xato postasi majburiy xatolik emas (malloc). Bu mono-ishlab chiqarishning disk raskadrovka chiqishi va Gl.LinkProgram deb nomlangandan so'ng amalga oshiriladi. Qurilish vaqtida hech qanday xato yo'q. Ulanish xatosi "OGOHLANTIRISH: Mumkin n" bo'lishi mumkin va mono bug tufayli bu erda to'liq bo'lmaydi.
qo'shib qo'ydi muallif Felix K., manba

1 javoblar

Quyidagi qatorlarni ishlatganingizdan keyin xatolikni topdim:

for (int i = 0; i < _VertexAttributeList.Length) {
    ShaderAttribute attribute = _VertexAttributeList[i];
    Console.WriteLine("Attribute {0} @ {1}", attribute.Name,
                      GL.GetAttribLocation(_Program, attribute.Name));
}

GLSL ishlatilmaydigan atributlarni e'tiborsiz qoldiradi va "normal" xususiyati -1 ga ega.

MonoTouch xatosi tufayli o'qimagan xato xabari nimani anglatishini hozirda bilganim sababli juda zerikarli xatolik yuz berdi: "Argumentlar ishlatilmadi va e'tiborsiz qoldirildi".

2
qo'shib qo'ydi