मैंने अभी तक एक .obj लोडर को उद्देश्य-सी पर पोर्ट किया है और अब तक, यह काम करता है, मैं अपने शिखर और मानक और सामान प्राप्त कर सकता हूं। प्रत्येक सामान्य अच्छा है, सही दिशा में इशारा करते हुए, मेरे सभी चेहरे सीसीडब्ल्यू घुमाव में हैं, लेकिन मुझे गहराई परीक्षण के साथ कुछ समस्याएं हैं।ओपनजीएल GL_DEPTH_TEST काम नहीं कर रहा
float rotX = 0;
float rotY = 0;
objModel* o = [[objModel alloc] initWithPath:@"/model.obj"]
glClearColor(0,0,0,0);
glEnable(GL_DEPTH_TEST);
glFrontFace(GL_CCW);
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslated(0, -1, 0);
glRotatef(90,0,0,1);
glRotatef(90,0,1,0);
glRotatef(rotX,0,0,-1);
glRotatef(rotY,0,1,0);
[o drawObjWithArrays]
glFlush();
मैं अपने वस्तु ड्राइंग के 2 अलग अलग तरीकों से है, एक का उपयोग करता glBegin()/glEnd(), अन्य शीर्ष और सामान्य सरणियों glDrawArrays के लिए एक कॉल (के साथ उपयोग करता है)। उनमें से दोनों एक ही समस्या में परिणाम देते हैं: चेहरों को उनके सामने चेहरों से छुपाया जाना चाहिए, क्योंकि गहराई परीक्षण काम नहीं कर रहा है। चेहरे को .obj फ़ाइल में आने के क्रम में खींचा जाता है।
आप यहाँ एक छवि मिल जाएगा: http://img524.imageshack.us/img524/994/image2jgq.png
मैं काफी ओपन और उद्देश्य सी के लिए नया है, इसलिए मुझे लगता है कि मेरी समस्या एक सेटिंग है कि मैं भूल गया से आता है। यहां वे हैं:
-(id) initWithFrame:(NSRect) frame {
NSLog(@"INIT GL VIEW\n");
GLuint attributes[] = {
NSOpenGLPFANoRecovery,
NSOpenGLPFAWindow,
NSOpenGLPFAAccelerated,
NSOpenGLPFADoubleBuffer,
NSOpenGLPFAColorSize, 24,
NSOpenGLPFAAlphaSize, 8,
NSOpenGLPFADepthSize, 24,
NSOpenGLPFAStencilSize, 8,
NSOpenGLPFAAccumSize, 0,
0
};
NSOpenGLPixelFormat* fmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:(NSOpenGLPixelFormatAttribute*) attributes];
if (!fmt)
NSLog(@"No OpenGL pixel format");
GLfloat mat_ambient[] = {0.0, 0.0, 1.0, 1.0};
GLfloat mat_flash[] = {0.0, 0.0, 1.0, 1.0};
GLfloat mat_flash_shiny[] = {50.0};
GLfloat light_position[] = {100.0,-200.0,-200.0,0.0};
GLfloat ambi[] = {0.1, 0.1, 0.1, 0.1};
GLfloat lightZeroColor[] = {0.9, 0.9, 0.9, 0.1};
/* set the material */
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glLightfv(GL_LIGHT0, GL_AMBIENT, ambi);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightZeroColor);
glMaterialfv(GL_FRONT, GL_SHININESS, mat_flash_shiny);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_flash);
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
return self = [super initWithFrame:frame pixelFormat:[fmt autorelease]];
}
कोई भी मेरी मदद कर सकता है? मैं हर किसी की कोशिश की है glDepthFunc, glCullFace, glFrontFace संयोजन संभव है, कुछ भी नहीं काम करता है ...
धन्यवाद ^^
इसे drawRect फ़ंक्शन में जोड़ा गया, "0 बिट गहराई" देता है। सही नहीं लगता ... – melka
तो आपकी समस्या है। – shoosh
वाह, धन्यवाद, यह काम किया। मुझे नहीं पता था कि आपको आईबी में पैरा सेट करना होगा। अब मेरे पास 24 बिट्स गहराई है और मेरे दृश्य में कोई और समस्या नहीं है ^^ – melka