(操作系統:Windows 7,編譯器:Visual Studio 2010的C++編譯器)glutBitmapString訪問衝突
我已經得到了一些繪製球體和車型正常工作的OpenGL程序,應用一些着色器等等。等等。
現在,我認爲這將是很好添加一些文字,所以我增加了以下三行到我的繪製方法:
glColor3f(0.5f, 0.5f, 0.5f);
glRasterPos2f(0, 0);
glutBitmapString(GLUT_BITMAP_HELVETICA_12, (unsigned char*)"some text");
現在不知何故這一切都使我的程序陷入無限「訪問衝突」循環,我似乎無法修復。我甚至評論了所有其他的繪製代碼,只是輸出文本,它仍然給出訪問衝突錯誤,我在這裏是一個損失,因爲沒有任何東西似乎影響到這一點。那麼是否有人有一些指針;)如何解決這個問題?
我可以發佈我所有的繪圖代碼,但我甚至嘗試過一個空的項目,所以我很確定它不是代碼的其餘部分。
編輯:我試圖縮小更多的錯誤,似乎glRasterPos2f拋出違反(足夠奇怪)。它不在任何glBegin和glEnd調用之間,並且沒有OpenGL錯誤。
EDIT2:一些建議我嘗試下面的代碼後,我擺脫了訪問衝突,但仍然顯示
glColor3f(0.5f, 0.5f, 0.5f);
glRasterPos2f(0.0f, 0.0f);
std::string str("Hello World");
char* p = new char[strlen(str.c_str() + 1)];
strcpy(p, str.c_str());
glutBitmapString(GLUT_BITMAP_HELVETICA_12, (const unsigned char*)p);
我只是猜測,但它可能是,在VC++ 2010中,像WCHAR *類型的「一些文本」字符串文字?如果是這樣,它將與GLUT不兼容。第二個代碼看起來非常奇怪,爲什麼動態分配的char * p?我只是使用了STL std :: string :: c_str()函數。 – datenwolf 2011-03-28 15:59:54
我也嘗試過直接使用c_str(),但沒有效果。如果你問我這是一個非常奇怪的問題,並且可能確實有一些與VC++ 2010編譯器相關的問題,我現在要在Linux機器上嘗試G ++,看看是否有幫助。 – 2011-03-29 07:29:43