2012-07-20 30 views
1

因此,我構建了這個遊戲引擎thinggy,並發現它非常難以創建某種帶有調試信息的覆蓋圖,並將其與D3D11的主遊戲窗口進行疊加或繪製文本,所以我想我會創建另一個窗口來包含我的調試數據。用C++將信息寫入空窗口

我得到了創建好的窗口和所有,但我不知道如何寫入我的調試信息。我不想使用Windows窗體設計器,因爲它必須將我的項目轉換爲我不想要的CLR項目。

我至少一直在使用googling至少3個小時(誠實),並嘗試過各種解決方案,但沒有一個看起來真的很實用/他們沒有工作。

我想寫的調試信息來自全局浮點值。一個例子是CAM_POS_X,它保存一個浮點值,它表示攝像機當前在哪個X座標上。

像這樣期望:

| SiriusAlpha 0.1調試window_ |
|當前X位置:CAM_POS_X |
|當前Y位置:CAM_POS_Y |
|當前Z位置:CAM_POS_Z |
|當前偏航:CAM_YAW_ __ _ __ |
|當前PITCH:CAM_PITCH_ __ |
|當前FPS:CUR_FPS
__ _ ____ |

所有這些值都不是必需的浮點變量。他們可以是字符串,雙打,整數,甚至布爾值。

如果有人願意向我解釋如何在D3D11中做到這一點,我可以跳過整個調試窗口schenennigans我會更快樂。

其他方面,如果有人能向我解釋這是如何完成的,我會很高興。

+1

也許這有幫助嗎? http://stackoverflow.com/questions/5979632/d3d11-how-to-draw-gdi-text-to-a-gxdi-surface-without-d2d – Aesthete 2012-07-20 13:47:27

+0

我看着那一個更早,但那是我放棄之前希望D3D能做這個文字的東西。我想我必須仔細看看它。 – 2012-07-20 14:06:14

+0

這似乎有點不完整,我需要一些東西來解釋一切,從非常基礎。我開始學習D3D11 3天前... – 2012-07-20 14:49:12

回答

0

您是否試過TextOut()?閱讀msdn上的文章。你應該已經有了一個設備上下文,剩下的就快速簡單。

TextOut函數使用當前選定的字體,背景顏色和文本顏色在指定位置寫入字符串。

打印到一個字符串是微不足道的。

wchar buf[128]; 
swprintf(buf, "Current X Position: %f", CAM_X_POS); 
TextOut(yourDC, screenXPos, screenYPos, &buf, sizeof(buf)); 

我還沒有測試過這個,但是從MSDN文檔中應該可以正常工作。

+0

我有,而且不實用。我似乎無法弄清楚如何將字符串和浮點數組合成一個'LPCWSTR'。我也必須知道這是廢話的字符串的長度,因爲這不是靈活的......該死的很難... – 2012-07-20 14:04:06

+0

你可以使用'swprintf()'(字符串寬打印格式)打印到一個字符串緩衝區。你可以在這裏閱讀它:http://msdn.microsoft.com/en-us/library/ybk95axf(v=vs.71).aspx – Aesthete 2012-07-20 23:37:30

+0

獲取字符串的長度沒有問題,只需使用sizeof你製作的字符串。看我的編輯,這是否更有意義? – Aesthete 2012-07-20 23:48:11