原创 1.封裝WinMain至動態鏈接庫

1.封裝WinMain至動態鏈接庫 DND的前言:     DND是定位於Windows平臺的2d遊戲引擎,使用C++和DirectX 11實現,編譯器使用vs2015。保留了一些3d功能,適合做一些pc上的高效率2d遊戲。目前已經是第n

原创 DND是如何封裝WinSock的?

DND是如何封裝WinSock的? 文章簡介: 本文章講述在WinSock的基礎上封裝一層框架後,將網絡通訊變得簡單和具有實用價值。 這個框架使用多線程、阻塞模型,使用TCP協議,最終封裝後爲一個服務器對多個客戶端的C/S模式,

原创 2.創建適合遊戲的窗口和消息循環

2.創建適合遊戲的窗口和消息循環   本章前言:     創建遊戲窗口和處理消息循環是很重要的事情,我嘗試過幾種不同的窗口處理方式,這次打算使用WS_POPUP樣式的窗口(無邊框)。上一次的框架代碼把創建窗口和消息循環放入了一個新的線程,

原创 【XAudio2】2.XAudio2 開始!

2.XAudio2 開始! 本節包含使用XAudio2關鍵主題的概述。 本節 XAudio2關鍵概念 介紹了使用XAudio2的關鍵概念。XAudio2庫版本 描述可用XAudio2庫的版本。如何:初始化XAudio2 描述初始化XAud

原创 3.vector實現字符串類

  3.vector實現字符串類   本章前言:     身爲土生土長的中國程序員,你肯定要用unicode來編寫程序。但是由wchar_t數組實現的字符串準確點說應該叫字符數組,但它在使用時比較繁瑣,而且容易出現數組越界和字符串結尾不爲

原创 光速AStar尋路算法(C++)

光速AStar尋路算法(C++) 一、最終效果 可以看到,我創建了500個小動物,也有110的FPS。雖然它們並不是每一幀都在計算尋路,但是平均下來不卡頓也不錯了。我是i7 6700 + GT 720,這個效果圖雖然不能直觀的說明效率問題

原创 C++標準庫中的隨機數生成

C++標準庫中的隨機數生成 一、僞隨機與真隨機 數字計算機的結果可以說是固定的、必然的。都是根據現有數據的狀態得出接下來的狀態。除非硬件損壞,計算機不會產生真正的隨機和無法預料的事。在生活中隨手拋一個硬幣也受到出手動作、狀態,以及風速等環

原创 讓Win32窗口程序擁有控制檯窗口

讓Win32窗口程序擁有控制檯窗口     首先,爲什麼我們有了普通窗口後還要控制檯窗口呢?因爲我們可以用它方便的輸出調試信息,而且普通玩家看到了也會覺得很高端。如果他會輸幾條命令,可能他會以爲自己就是黑客了。 示例效果:    

原创 4.使用pnglib讀寫png圖片

  4.使用pnglib讀寫png圖片   本章前言:     這章就是爲了讀取png格式圖像到32位位圖(ARGB)中,逆之則然,廢話少說開始正題。   目標要點總結: 1.  使用pnglib讀寫文件   最終效果:     以下操作

原创 【XAudio2】8.怎麼播放音效

8.怎麼播放音效 本主題描述所需的最小步驟在XAudio2播放預先加載的音頻數據。XAudio2的初始化(看如何初始化XAudio2,在第五篇)和音頻數據加載(看如何:XAudio2加載音頻數據文件,在第7篇),你可以通過創建一個Sour

原创 【XAudio2】5.如何初始化 XAudio2

5.如何初始化 XAudio2 這個例子創建一個XAudio2引擎實例,並創建一個Mastering Voice。 初始化XAudio2 1.創建一個XAudio2引擎實例通過XAudio2Create函數。 #ifndef _X

原创 【XAduio2】6.如何枚舉音頻設備

這個例子向您展示瞭如何初始化XAudio2當可能存在多個音頻設備。GetDeviceCount和GetDeviceDetails方法用於檢查音頻設備上可用的屬性系統。這個過程允許選擇最匹配的設備遊戲的需求。找到一個可以接受的設備後,設備號

原创 【XAudio2】7.如何加載音頻數據文件

7.如何加載音頻數據文件 本主題描述的步驟來填充所需的結構在XAudio2播放音頻數據。以下步驟加載“fmt”和“data”塊的一個音頻文件,並使用它們來填充WAVEFORMATEXTENSIBLE結構和一個XAUDIO2_BUFFER結

原创 【XAudio2】3.關鍵概念

3.關鍵概念 這對於使用XAudio2概述介紹了一些關鍵的概念。XAudio2引擎聲音音頻圖回調相關主題 XAudio2 Engine IXAudio2是XAudio2引擎和核心接口。創建一個IXAudio2接口允許客戶列舉的實例可用的音

原创 WinSock的recv返回值處理

今天在調試程序的時候發現,客戶端調用closesocket時,服務器應該會返回SOCKET_ERROR,實際上Debug版本是這樣,但Release版本並不是。相同的代碼Debug返回了-1,Release返回了0。 通過看msdn的原文