- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
class C3D
{
public:
//C3D() {} // Constructor
//~C3D() {} // Destructor
void(*init)(float R, float A, float B, float Rmin, float Rmax, float Bmin, float Bmax); // Initialize work with 3D standard camera
void(*setCamera)(int iType); // Set type of camera
void(*setPosition)(float x, float y, float z); // Set position
void(*setRender3D)();
UINT(*addMesh)(LPCWSTR sMesh); // Add Mesh
void(*renderMesh)(UINT idMesh, float x, float y, float z);
void(*renderMeshSubset)(UINT idMesh, UINT idSubset, float x, float y, float z);
void(*renderMeshSubsetRotateX)(UINT idMesh, UINT idSubset, float x, float y, float z, float a);
// простыня указателей на функции урезана
void setHModule(HMODULE hLib)
{
m_hLib = hLib;
(FARPROC &)init = GetProcAddress(m_hLib, "init3D"); // Initialize work with 3D standard camera
(FARPROC &)setCamera = GetProcAddress(m_hLib, "setCamera"); // Set type of camera
(FARPROC &)setPosition = GetProcAddress(m_hLib, "setPosition"); // Set position
(FARPROC &)setRender3D = GetProcAddress(m_hLib, "setRender3D");
(FARPROC &)addMesh = GetProcAddress(m_hLib, "addMesh"); // Add Mesh
(FARPROC &)renderMesh = GetProcAddress(m_hLib, "renderMesh");
(FARPROC &)renderMeshSubset = GetProcAddress(m_hLib, "renderMeshSubset");
(FARPROC &)renderMeshSubsetRotateX = GetProcAddress(m_hLib, "renderMeshSubsetRotateX");
// простыня GetProcAddress урезана
}
protected:
HMODULE m_hLib; // NetWars.dll
};
Некий SDK для MMO-игр за авторством одного известного разработчика.
Стандартный класс-обёртка для динамической работы с DLL.
А вообще прям красиво с загрузкой модулей сложно сделать.
+100500, тоже не нашёл говна в коде.
Аффтар похоже обожрался и заснул где-то на вокзале в выгребной яме, и ему теперь везде говно мерещится.
Хедеры тут ничем не помогут.
Скорее всего, аффтар просто школотодебил и не слышал ничего про динамическую работу с ДЛЛ, у него мозгов не хватает разобраться, что это за код, и он ставит ярлык - говно.
Будь силён духом, и никакая ММОРПГ тебя не зацепит.
Хотел бы чтобы вы сделали игру, MMORPG суть такова... Пользователь может репорить баги, писать код, запилить свой проект или стать великодушным диктатором. И если пользователь пишет код, то он отправляет патчи, багзиллы набигают программисты и тролли. Можно запилить что-то полезное.
P.S. Я джва года хочу такую игру.
А вот в DX12 и новом OGL обещают сильно снизить оверхед на передачу данных между процом и видео.
Так как мне проплатила амд, то они долго делали штуку называющуюся Mantle плюс единое адресное пространство и zero-cost mem copy .
Еще один пункт не кросс-платформенности
В каждой шутке есть доля шутки.
- запихиваешь указатели на функции в глобальную структуру, экспортишь структуру
- запихиваешь указатели на функции в глобальный массив, эспортишь массив
потому что простыни GetProcAddress() - это говно. массив проще - но нельза типизировать. сгенерить автоматом структуру с правильно-типизироваными указателями сложнее - но в последствии меньше граблей.
были в свое время тулзы implib(?) генерить по длл. потом делаешь хидер и юзашь как любую другую либу.