2016-04-03 37 views
0

Çok, sorun oldukça basit olduğundan emin değilim, ancak sorunları görmüyorum ve hata ayıklayıcı bana yardımcı olmuyor. Her neyse, bir uçak çizmeye çalışıyorum ve tek alacağım siyah. Bunu çizip çekmediğinden emin değilim, ama görülmesi için çok küçük.opengl glDrawElements Sorunlar

int index[][3] = {{0,1,4}, {0,3,4}, {1,2,5}, {1,4,5}}; 
double VertexA[][3] = {{0.0 , 0.0 , -.0415}, {0.5, 0.0, .6543}, {1.0,0,-.0415}, 
         {0.0, 0.5, .093}, {0.5, 0.5, -.070}, {1.0, 0.5 , .093}, 
         {0.0,1.0, -.0415}, {0.5, 1.0, .6543}, {1.0,1.0,-.0415}} 

void display() { 
    glClear(GL_COLOR_BUFFER_BIT); 
    glLoadIdentity(); 
    glEnableClientState(GL_VERTEX_ARRAY); 
    glVertexPointer(3, GL_DOUBLE, 24, VertexA); 
    glDrawElements(GL_TRIANGLES, 4, GL_UNSIGNED_INT, index); 
    glDisableClientState(GL_VERTEX_ARRAY); 
    glutSwapBuffers(); 
} 
void reshape(int w, int h) { 
    if (w <= h) { 
     glViewport(0,(h-w)/2, w,w); 
    } 
    else { 
     glViewport((w-h)/2,0,h,h); 
    } 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    gluPerspective(30.0, w/h, 10.0, 100.0); 
    glMatrixMode(GL_MODELVIEW); 

} 

Bu, kodumun tanımlı bir VertexA/Dizin dizisiyle değiştirilmiş pasajıdır. İndeks/vertexArray'ın doğru bir şekilde elde edildiğinden eminim, çizmenin bir parçası da konulara bakıyorum. Sanırım glDrawElement veya gluPerspective'ı yanlış kullanıyorum. Dürüst olmak gerekirse, emin değilim. ColorArray'ım olmalı mıyım? İlk etapta bir renk tanımlamıyorsam beyaz olmalı? Herhangi bir sorunuz varsa veya snippet'ten daha fazlasını istediğinizi soruyorsunuz, ancak sorunların snippet içinde olduğunu hissediyorum.

+0

Yan yana: derleyicim '.0.5' (satır 3) ile çifte başlatmaya çalışırken bir yazım hatası veriyor. –

+0

Düzelt, bir yazım hatası oldu, VertexA/Dizin verisini aldığım bütün kodu postalamak istemedim – Leruce

cevap

2

gluPerspective işlevinin aspect için bir kayan nokta bağımsız değişkenine ihtiyacı vardır. Satır

gluPerspective(30.0, w/h, 10.0, 100.0); 

ama hesaplama w/h bir tamsayı bölümüdür. (double)w/h veya belki (GLdouble)w/h kullanmanızı öneririz.

+0

Int, neyse çifte zorlanmaz mıydı? Şey, kontrol ettim ve test ettim. Yardımcı gözükmüyordu. Znear/zfar iyi görünüyor mu? Sorunlar olduğunu düşünmüyorum, ama kullanmak için ideal olanı nasıl belirleyeceğinden asla emin değilim. – Leruce

+1

Üzgünüz, yardımcı olmadı. Bölüm, hedef türüne bakılmaksızın yapılır: ifadeler içerdikleri türlere göre değerlendirilir, daha sonra gerekirse hedef türüne dönüştürülür. –

3

Nesneniz görüntüleme boşluğundan tamamen çıkarılmıştır. ModelView olarak bir kimlik matrisi ve gluPrespective ile near=10 ve far=100 Projeksiyon olarak kullanıyorsunuz. Sonuç olarak, görüntünüz z = -10'dan z = -100'e kadar olurken, nesnelerin z = -0,1'den z = 0.1'e kadar uzanır, böylece yakın düzlem tarafından kırpılır.