2010-06-06 6 views
5

मैं बहुत की तरह बनावट उत्पन्न करने के लिए कोशिश कर रहा हूँ returing रहता है:GlGenTextures 0 के

#define checkImageWidth 64 
#define checkImageHeight 64 
static GLubyte checkImage[checkImageHeight][checkImageWidth][4]; 
static GLubyte otherImage[checkImageHeight][checkImageWidth][4]; 

static GLuint texName[2]; 

void makeCheckImages(void) 
{ 
    int i, j, c; 

    for (i = 0; i < checkImageHeight; i++) { 
     for (j = 0; j < checkImageWidth; j++) { 
      c = ((((i&0x8)==0)^((j&0x8))==0))*255; 
      checkImage[i][j][0] = (GLubyte) c; 
      checkImage[i][j][1] = (GLubyte) c; 
      checkImage[i][j][2] = (GLubyte) c; 
      checkImage[i][j][3] = (GLubyte) 255; 
      c = ((((i&0x10)==0)^((j&0x10))==0))*255; 
      otherImage[i][j][0] = (GLubyte) c; 
      otherImage[i][j][1] = (GLubyte) 0; 
      otherImage[i][j][2] = (GLubyte) 0; 
      otherImage[i][j][3] = (GLubyte) 255; 
     } 
    } 
} 
void init(void) 
{  
    glClearColor (1.0, 0.0, 0.0, 0.0); 
    glShadeModel(GL_FLAT); 
    glEnable(GL_DEPTH_TEST); 

    makeCheckImages(); 
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1); 

    glGenTextures(2, texName); 
    glBindTexture(GL_TEXTURE_2D, texName[0]); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 
     GL_NEAREST); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, 
     GL_NEAREST); 
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, 
     checkImageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, 
     checkImage); 

    glBindTexture(GL_TEXTURE_2D, texName[1]); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, 
     GL_NEAREST); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, 
     GL_NEAREST); 
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); 
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, checkImageWidth, 
     checkImageHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, 
     otherImage); 
    glEnable(GL_TEXTURE_2D); 

    engineGL.current.tex = texName[1]; 
} 

लेकिन जब मैं texName के मूल्यों की जाँच [0] और [1] वे दोनों 0, मैं क्यों समझ में नहीं आता हैं, मैं क्या गलत कर रहा हूं। धन्यवाद।

+0

क्या यह एकमात्र कार्य विफल रहता है? – jalf

+0

नहीं, अन्य चीजें भी असफल हो रही हैं, मैं अपना संदर्भ स्थापित करने के बाद init() को कॉल कर रहा हूं ... – jmasterx

+1

क्या आपने सत्यापित किया है कि आप अपना संदर्भ स्थापित करने में सफल रहे हैं? –

उत्तर

8

glGetError पर कॉल करने का प्रयास करें। यह आपको विस्तार से बताएगा कि क्या गलत हुआ। सामान्य रूप से, यदि कोई ओपनजीएल फ़ंक्शन विफल रहता है, तो सबसे पहले आप ओपनजीएल से पूछना चाहिए कि यह क्यों विफल हुआ। यह जानता है, क्योंकि यह सिर्फ समारोह निष्पादित करने की कोशिश की।

यह अनुमान लगाने के लिए हमारे लिए बहुत कठिन है कि क्या गलत हो सकता है।

+0

मुझे त्रुटि 1282 मिलती है, वह क्या है? – jmasterx

+3

पता लगाने के लिए 'gluErrorString() 'का उपयोग करें। :) http://www.opengl.org/wiki/FAQ#glGetError_.28or_.22How_do_I_check_for_GL_errors.3F.29 – jalf

+0

"अमान्य ऑपरेशन" – jmasterx

18

ओपनजीएल संदर्भ बनाने से पहले आप शायद glGenTextures को कॉल कर रहे हैं, और इससे एक जीएल त्रुटि उत्पन्न होगी। ओपनजीएल शुरू करने से पहले बनावट बनाने की कोशिश न करें।

+0

हां, यह मेरे मुद्दों में से एक था, मैं अपने रेंडर लूप में wglmakecurrent भी कॉल कर रहा था जो – jmasterx

+0

परेशानी पैदा कर रहा था आप बस मुझे 1 नींद की रात बचाएं – 5argon

+0

धन्यवाद! तुमने मेरी जान बचाई! –

11

मैं इस समस्या थी, और glGetError() 0.

लौट रहा था मेरे मामले में यह एक जीएल संदर्भ पर बनाया गया था के लिए एक अलग धागे पर glGenTextures(...) बुला (क्योंकि मैं बनावट एसिंक्रोनस रूप से लोड हो रहा है किया गया था) के कारण हुई थी । के बाद मुख्य थ्रेड से इसे कॉल करना glGenTextures(...) एसिंक लोड फिर से काम करना शुरू कर देता है।

0

मेरे मामले में, मैं अपने बनावट को "आलसी लोडिंग" था, इसलिए glGenTexture एक glbegin/glEnd कमांड के अंदर था!

-1

glGenTexture को कॉल करने से पहले, आपका ओपनजीएल संदर्भ बनाया जाना चाहिए और XXXMakeCurrent'ed

संबंधित मुद्दे