2010-03-25 18 views
6

में एक समान चर को कैसे अपडेट करें मैं अपने सहयोगी से अपने शेडर में आंख की स्थिति अपडेट करने की कोशिश कर रहा हूं लेकिन जब मैं कोशिश करता हूं तो मुझे त्रुटि 1281 मिलती रहती है। प्रारंभिकरण के बाद मुझे कोई समस्या नहीं है जब मैं बाद में मूल्यों को अपडेट करने का प्रयास करता हूं। यहाँ मेरी कोड है:जीएलएसएल

शून्य GraphicsObject :: SendShadersDDS ([] vertFile चार, चार fragFile [], चार फ़ाइल नाम []) {

  char *vs = NULL,*fs = NULL; 

      vert = glCreateShader(GL_VERTEX_SHADER); 
      frag = glCreateShader(GL_FRAGMENT_SHADER); 

      vs = textFileRead(vertFile); 
      fs = textFileRead(fragFile); 
      const char * ff = fs; 
      const char * vv = vs; 

      glShaderSource(vert, 1, &vv, NULL); 
      glShaderSource(frag, 1, &ff, NULL); 

      free(vs); free(fs); 

      glCompileShader(vert); 
      glCompileShader(frag); 

      program = glCreateProgram(); 
      glAttachShader(program, frag); 
      glAttachShader(program, vert); 

      glLinkProgram(program); 
      glUseProgram(program); 

     LoadCubeTexture(filename, compressedTexture); 

     GLint location = glGetUniformLocation(program, "tex"); 
     glUniform1i(location, 0); 
     glActiveTexture(GL_TEXTURE0); 

     EyePos = glGetUniformLocation(program, "EyePosition"); 

     glUniform4f(EyePos, EyePosition.X(),EyePosition.Y(), 
            EyePosition.Z(), 1.0);   
     DWORD bob = glGetError(); 
     //All is fine here 
     glEnable(GL_DEPTH_TEST); 

}

और यहाँ समारोह मैं है

शून्य GraphicsObject :: UpdateEyePosition (Vector3D & eyePosition) {

+०१२३५१६४१०६: आंख स्थिति अद्यतन करने के लिए फोन
glUniform4f(EyePos, eyePosition.X(),eyePosition.Y(), 
            eyePosition.Z(), 1.0); 

DWORD bob = glGetError(); 
//bob equals 1281 after this call  

}

मैं चर को अद्यतन करने का अब कुछ तरीके की कोशिश की है और इस नवीनतम अवतार है, को देखने के लिए धन्यवाद, सभी टिप्पणियों का स्वागत करते हैं।

अद्यतन: त्रुटि वास्तव में यह सोचते हैं यह था, त्रुटि वास्तव में तब होता है जब मैं वसंत के एक नंबर आकर्षित के लिए बिल्कुल भी यहां नहीं हो रहा है, मेरी गलती:

के लिए

(int i = 0; मैं < 2; i ++) {

 springs[i].Draw(); 

} 

जब मैं पहली बार एक यह ठीक है आकर्षित लेकिन जब बिंदु पर दूसरा जहां glBegin (GL_LINE_STRIP) के जवाब में glEnd() फोन बुला मैं एक त्रुटि मिलती है। असुविधा के लिए खेद है क्योंकि यह पोस्ट नहीं किया गया था, लेकिन कम से कम अगर कोई यह जानना चाहता है कि वर्दी चर को कैसे अपडेट किया जाए तो यह यहां है।

उत्तर

4

यह संभवतः इस तथ्य के कारण होता है कि आईपॉस अमान्य है।

यदि आप फ़ंक्शन को निम्न में बदलते हैं तो क्या होता है?

void GraphicsObject::UpdateEyePosition(Vector3d& eyePosition) 
{ 
    EyePos = glGetUniformLocation(program, "EyePosition"); 
    glUniform4f(EyePos, eyePosition.X(),eyePosition.Y(), eyePosition.Z(), 1.0); 

    DWORD bob = glGetError(); 
} 

संपादित करें: अगर आपके अपडेट के जवाब में glBegin/glEnd के लिये दस्तावेज कहते हैं कि तुम त्रुटि 1280 (GL_INVALID_ENUM) प्राप्त होंगे मोड एक अस्वीकार्य मूल्य पर सेट है। इस प्रकार आपकी समस्या यह है कि GL_LINE_STRIP समर्थित नहीं है।

GL_INVALID_OPERATION is generated if glBegin is executed between a glBegin and the corresponding execution of glEnd. 

GL_INVALID_OPERATION is generated if glEnd is executed without being preceded by a glBegin. 

GL_INVALID_OPERATION is generated if a command other than glVertex, glColor, glSecondaryColor, glIndex, glNormal, glFogCoord, glTexCoord, glMultiTexCoord, glVertexAttrib, glEvalCoord, glEvalPoint, glArrayElement, glMaterial, glEdgeFlag, glCallList, or glCallLists is executed between the execution of glBegin and the corresponding execution glEnd. 

GL_INVALID_OPERATION त्रुटि 1282 और GL_INVALID_ENUM 1280 रिटर्न ... तो एक बहुत क्या सटीक त्रुटि मिल रहा है पर निर्भर करता है ...

+0

मैं अभी भी कोई त्रुटि मिलती है, मैं के साथ शुरू करने के लिए है कि कर रहा था। – paj777

+0

आपको क्या त्रुटि मिलती है? और क्या त्रुटि glGetUniformLocation या glUniform4f से आती है? – Goz

+0

और आईपॉस मूल्य क्या है? – Bahbar

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