2010-10-05 49 views
1

我使用C++開發反恐精靈Antichat。這個AC需要截圖並將它們上傳到指定的服務器。 問題是,在Win7/Vista的屏幕截圖是黑色的。我在網上做了研究,但沒有找到對我有幫助的東西。關於OpenGL遊戲(Counter Strike 1.6)的C++/C#截圖問題

我看到TAKSI的來源,測試所有版本和Taksi 0.3足夠好,不是很大,但我不能調試源(http://sourceforge.net/projects/taksi/files/stable/taksi-0.3/taksi-0.3-src.zip/download)。當我調試這與所有的DirectX 9 SDK包括和庫和STL,我收到了很多錯誤。 (也是我讀了Build.txt的信息,並用Visual C++ 2006,DC++,Visual C++ 2010進行了嘗試)

我是C++應用程序的開發者,我真的很想這樣做。 如果有人可以給我一個幫助或簡化taksi 0.3源碼(我只需要在OpenGL上截取小截圖),並給我的源代碼將非常有利於我和CS社區。

此外,如果沒有人有時間來簡化0.3源對我來說,我將不勝感激,如果你能解釋我如何調試(十分解釋TXT :))

請幫我:P

回答

0

如果你可以進入OpenGL/GLUT顯示回調函數,你可以在函數結尾添加一個glReadPixels的調用,在glutSwapBuffers();之後的某處。接下來,您需要將格式爲glReadPixels的RGB圖像緩衝區以適當的格式寫入文件,如果應用程序尚未具有圖像處理庫,則可能使用IJG JPEG library

int width = 1024; // would be better to get actual window dimensions 
int height = 768; 
unsigned char *img_rgb[width * height * 3]; // each pixel is three bytes (RGB) 
... 
glReadPixels(0,0, width,height, GL_RGB, GL_UNSIGNEDBYTE, img_rgb); 
+0

感謝您的回覆jholl,這是非常有用的。你能幫我瞭解如何掛鉤指定應用程序的信息嗎? (應用程序名稱是hl.exe -OpenGL) – 2010-10-07 14:34:54