好的。所以我想用C++編寫的文件。我用c運行了代碼,並且完全沒有問題。關於OpenGL的問題以及將C轉換爲C++的過程
因爲我不知道c,所以我使用了一些轉換軟件一段時間,但它並不奏效(猜測編碼格式不是它所需的樣式)。我決定自己嘗試一下,看起來我只需要將一些malloc語句更改爲新的語句,並用delete刪除即可。所以我運行了程序,看起來大部分功能都能正常工作,但是這給我帶來了麻煩。
當我試圖更新新圖像的顯示(我讀TIFF圖像數據,並在屏幕上顯示它)我碰上這些特定語句的問題:
glutReshapeWindow(ImageWidth,ImageLength);
glClear(GL_COLOR_BUFFER_BIT);//these
glRasterPos2i(0, 0);//three
glDrawPixels(ImageWidth, ImageLength, GL_RGB,
GL_UNSIGNED_BYTE, ImageData);//statements are the ones giving me the error
我包括代碼塊中的第一條語句表明它不會立即炸燬任何類型的OpenGl調用。
我一直沿着
Cannot access memory at address 0xfbad248c
Cannot access memory at address 0xfbad248c
Cannot access memory at address 0xaabbeeaa
我知道這可能是有點模糊的線條收到錯誤,但是這可能是此錯誤的一些常見的來源是什麼?它在C中工作,可能導致快速切換到C++中的這個錯誤?
謝謝,讓我知道你是否需要任何更多的信息。
好了,所以我真的不使用標準的OpenGL庫,我相信(這是一類,我是由教員給出的庫文件)。我的代碼爲
#include <GL/glut.h>
as my #include。這些庫與c文件中的庫完全一樣,因爲我只是將它們複製並粘貼到我的C++項目中。 (我還在另一個C++項目中以有限的方式與他們合作)。以防萬一,我檢查了我的文件系統中的文件「OPENGL32.DLL」和「GLU32.DLL」,但沒有找到它們。
我也許應該包括這些額外的細節:
一個init()方法在程序開始時被稱爲實際輸入循環調用之前:
void
init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
makeCheckImage();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
}
這種方法似乎做工精細(在函數調用後不久就會創建一個簡單的棋盤圖案)。我不確定這些類型的OpenGL文件(「OPENGL32.DLL」或「GLU32.DLL」),但希望這可以縮小問題的範圍。
至於ImageData行,我不相信ImageData對象被破壞或類似的東西,因爲你談論的一些原因以及我發佈的第一個代碼塊中的代碼(錯誤的根源)是一個else塊這樣內:
if (ImageData == NULL) {/*code*/}
else{/*this is where the error code is*/}
我可以張貼在Makefile的信息,如果你認爲這將是有幫助的(只是不希望這個線程弄亂用的東西,如果它的不)。
我回復了一個編輯。 – Chad 2009-02-26 10:20:09