0
當我遇到一個非常奇怪的現象與數組時,我正在用glaux庫加載openGl中的圖像。下面是我嘗試過的一些例子,以及它們是否成功。 curFreeId變量是全局變量。我創建的用於測試的額外變量對於函數是局部的。爲什麼這個陣列選擇會導致這樣一個不好的現象?
從何時起,這會影響代碼流。
unsigned int curFreeId = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curFreeId]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
VS
modStruct->t[ i ].gluId = 0;
glGenTextures(1, &glTextureList[0]);
glBindTexture(GL_TEXTURE_2D, glTextureList[0]);
第一個代碼將無法正常工作。第二個意志。有沒有人有任何線索爲什麼發生這種情況?
編輯:奇怪的是,這也正常工作。
unsigned int curFreeId = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[0]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
這樣做。
unsigned int curFreeId = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curFreeId]);
glBindTexture(GL_TEXTURE_2D, glTextureList[0]);
繼續進行一些測試。我遇到了更加奇怪的結果。
這工作
unsigned int curFreeId = 0;
unsigned int curid = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curid]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
但這並不...
unsigned int curFreeId = 0;
unsigned int curid = curFreeId;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curid]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
但這...
unsigned int curFreeId = 0;
unsigned int curid = curFreeId = 0;
modStruct->t[ i ].gluId = curFreeId;
glGenTextures(1, &glTextureList[curid]);
glBindTexture(GL_TEXTURE_2D, glTextureList[curFreeId]);
這個世界是什麼......這是一些某種故障?
發佈您的整個代碼。你的應用程序是多線程的嗎?多次運行相同的代碼時,你會得到不一致的結果嗎? – 2010-07-10 02:49:41
並且用什麼編譯器?是否進行優化?是否有可能遍歷生成的彙編代碼? – 2010-07-10 03:02:27
很可能你已經在某處覆蓋了一些未分配的內存,但沒有更多的代碼很難找出問題。 – 5ound 2010-07-10 03:05:24