 |
|

17.08.2023, 01:48
|
|
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами:
2874035
Репутация:
183
|
|
Те же гайды -> https://www.blast.hk/threads/113060/
Я не знаю как подключить имгуи, думал после перерыва идеи какие нибудь придут, но тупик
При подключении файла imgui_impl_dx9.cpp выходит очень много ошибок, и как это исправлять, я понятия не имею
В доп. каталоги включаемых файлов папка имгуи прописана, понятия не имею что делать
Ни одной строки кода с имгуи еще не было прописано, кроме самого его подключения
Когда убираю имгуи с проекта - компилируется удачно

|
|
|

17.08.2023, 02:01
|
|
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами:
3831395
Репутация:
183
|
|
Сообщение от Smeruxa
Те же гайды -> https://www.blast.hk/threads/113060/
Я не знаю как подключить имгуи, думал после перерыва идеи какие нибудь придут, но тупик
При подключении файла imgui_impl_dx9.cpp выходит очень много ошибок, и как это исправлять, я понятия не имею
В доп. каталоги включаемых файлов папка имгуи прописана, понятия не имею что делать
Ни одной строки кода с имгуи еще не было прописано, кроме самого его подключения
Ты не показал как именно ты подключал имгуи, так что я записал тебе видос как я подключаю имгуи в проект:
|
|
|

17.08.2023, 02:06
|
|
Постоянный
Регистрация: 04.06.2020
Сообщений: 620
С нами:
3127813
Репутация:
133
|
|
Сообщение от Smeruxa
Те же гайды -> https://www.blast.hk/threads/113060/
Я не знаю как подключить имгуи, думал после перерыва идеи какие нибудь придут, но тупик
При подключении файла imgui_impl_dx9.cpp выходит очень много ошибок, и как это исправлять, я понятия не имею
В доп. каталоги включаемых файлов папка имгуи прописана, понятия не имею что делать
Ни одной строки кода с имгуи еще не было прописано, кроме самого его подключения
Когда убираю имгуи с проекта - компилируется удачно
оффтоп, умоляю, начните использовать CMake
|
|
|

17.08.2023, 02:07
|
|
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами:
2874035
Репутация:
183
|
|
Сообщение от ARMOR
Ты не показал как именно ты подключал имгуи, так что я записал тебе видос как я подключаю имгуи в проект:
тоже самое сделал, но мне кажется проблема не в имгуи, т.к. ссылается на Windows Kit, поэтому сюда написал, может кто-то встречал уже такое
|
|
|

17.08.2023, 02:09
|
|
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами:
3831395
Репутация:
183
|
|
Сообщение от Smeruxa
тоже самое сделал, но мне кажется проблема не в имгуи, поэтому сюда написал, может кто-то встречал уже такое
Ну, у тебя жалобы идут на Windows SDK, возможно у тебя в проекте указана его версия не установленая на твоем ПК.
Ещё можешь попробывать собрать мой проект ImGui
Исходник - [ASI] CMake Исходник с ImGui для GTA SA
Решил написать шаблон проекта для создания ImGui окон в GTA SA, с которым не будет умирать собейт и т.д. По стандарту в коде для открытия указана кнопка F9. Ссылка на исходник: Проект для VIsual Studio: https://github.com/xARMORx/ImGuiTemplate/tree/main Проект CMake...
www.blast.hk
|
|
|

17.08.2023, 02:11
|
|
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами:
2874035
Репутация:
183
|
|
Сообщение от ARMOR
Ну, у тебя жалобы идут на Windows SDK, возможно у тебя в проекте указана его версия не установленая на твоем ПК.
Я посмотрел на версию, она не совпадала с проектом, поставил ту которая указана, но разницы нет
|
|
|

17.08.2023, 02:13
|
|
Постоянный
Регистрация: 04.06.2020
Сообщений: 620
С нами:
3127813
Репутация:
133
|
|
Сообщение от Smeruxa
Те же гайды -> https://www.blast.hk/threads/113060/
Я не знаю как подключить имгуи, думал после перерыва идеи какие нибудь придут, но тупик
При подключении файла imgui_impl_dx9.cpp выходит очень много ошибок, и как это исправлять, я понятия не имею
В доп. каталоги включаемых файлов папка имгуи прописана, понятия не имею что делать
Ни одной строки кода с имгуи еще не было прописано, кроме самого его подключения
Когда убираю имгуи с проекта - компилируется удачно
Возможно, проблема в том, что ты инклудишь файлы винды, не заинклудив перед этим Windows.h (это имеет значение)
Скинь полный лог ошибки, может будет понятнее
|
|
|

17.08.2023, 02:13
|
|
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами:
2874035
Репутация:
183
|
|
Код:
Код:
Сборка начата…
1>------ Сборка начата: проект: ASI_Project_Template, Конфигурация: Release Win32 ------
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(500,5): warning MSB8004: каталог Output заканчивается не косой чертой. Этот экземпляр сборки добавит косую черту, поскольку она необходима для правильного определения каталога Output.
1>imgui_impl_dx9.cpp
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(34,25): error C3646: LookupContext: неизвестный спецификатор переопределения
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(34,38): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(35,25): error C3646: ProposedHandle: неизвестный спецификатор переопределения
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(35,39): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(36,23): error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(36,23): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(36,33): error C2238: непредвиденные лексемы перед ";"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(45,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(44,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "RPC_STATUS"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(52,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(50,1): error C2086: int RPCNSAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(43): message : см. объявление "RPCNSAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(51,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "RPC_STATUS"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(60,1): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(61,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(58,1): error C2086: int RPCNSAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(43): message : см. объявление "RPCNSAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(61,1): error C2182: RPC_ENTRY: недопустимое использование типа "void"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(62,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "I_RpcNsRaiseException"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(63,8): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(63,5): error C2065: IN: необъявленный идентификатор
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(63,8): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "PRPC_MESSAGE"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(69,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(67,1): error C2086: int RPCNSAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(43): message : см. объявление "RPCNSAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(68,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "RPC_STATUS"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(76,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(74,1): error C2086: int RPCNSAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(43): message : см. объявление "RPCNSAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(75,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "RPC_STATUS"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(83,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(81,1): error C2086: int RPCNSAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(43): message : см. объявление "RPCNSAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(82,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "RPC_STATUS"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(89,1): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(90,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(88,1): error C2086: int RPCNSAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(43): message : см. объявление "RPCNSAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(90,1): error C2182: RPC_ENTRY: недопустимое использование типа "void"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(90,1): error C2086: int RPC_ENTRY: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(61): message : см. объявление "RPC_ENTRY"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(91,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "I_NsClientBindDone"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(93,6): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(238,20): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "MIDL_user_allocate"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(238,57): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(239,13): error C2182: __RPC_USER: недопустимое использование типа "void"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(239,13): error C2040: __RPC_USER: "int" отличается по уровням косвенного обращения от "void *"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(239,24): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "MIDL_user_free"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(239,80): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(243,8): error C2086: void *__RPC_USER: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(238): message : см. объявление "__RPC_USER"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(243,19): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "I_RpcDefaultAllocate"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(244,19): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(244,10): error C2065: handle_t: необъявленный идентификатор
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(244,19): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "bh"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(246,6): error C2182: __RPC_USER: недопустимое использование типа "void"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(246,6): error C2040: __RPC_USER: "int" отличается по уровням косвенного обращения от "void *"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(246,17): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "I_RpcDefaultFree"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(247,19): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(247,10): error C2065: handle_t: необъявленный идентификатор
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(247,19): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "bh"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(285,27): error C2143: синтаксическая ошибка: отсутствие ")" перед "*"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(285,27): error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(285,27): error C2378: __RPC_USER: переопределение; символ нельзя перегрузить typedef
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(238): message : см. объявление "__RPC_USER"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(285,40): error C2059: синтаксическая ошибка: )
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(285,58): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(287,27): error C2143: синтаксическая ошибка: отсутствие ")" перед "*"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(287,27): error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(287,27): error C2378: __RPC_USER: переопределение; символ нельзя перегрузить typedef
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(238): message : см. объявление "__RPC_USER"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(287,47): error C2059: синтаксическая ошибка: )
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(287,54): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(289,27): error C2143: синтаксическая ошибка: отсутствие ")" перед "*"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(289,27): error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(289,27): error C2378: __RPC_USER: переопределение; символ нельзя перегрузить typedef
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(238): message : см. объявление "__RPC_USER"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(289,48): error C2059: синтаксическая ошибка: )
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(289,63): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(298,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(297,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "RPC_BINDING_HANDLE"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(304,1): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(305,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(303,1): error C2086: int RPCRTAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(296): message : см. объявление "RPCRTAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(305,1): error C2182: RPC_ENTRY: недопустимое использование типа "void"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(305,1): error C2086: int RPC_ENTRY: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(61): message : см. объявление "RPC_ENTRY"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(306,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "NDRCContextMarshall"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(309,6): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(312,1): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(313,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(311,1): error C2086: int RPCRTAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(296): message : см. объявление "RPCRTAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(313,1): error C2182: RPC_ENTRY: недопустимое использование типа "void"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(313,1): error C2086: int RPC_ENTRY: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(61): message : см. объявление "RPC_ENTRY"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(314,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "NDRCContextUnmarshall"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(316,11): error C2061: синтаксическая ошибка: идентификатор "RPC_BINDING_HANDLE"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(319,6): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(322,1): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(323,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(321,1): error C2086: int RPCRTAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(296): message : см. объявление "RPCRTAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(323,1): error C2182: RPC_ENTRY: недопустимое использование типа "void"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(323,1): error C2086: int RPC_ENTRY: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(61): message : см. объявление "RPC_ENTRY"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(324,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "NDRCContextUnmarshall2"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(326,11): error C2061: синтаксическая ошибка: идентификатор "RPC_BINDING_HANDLE"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(329,6): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(332,1): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(333,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(331,1): error C2086: int RPCRTAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(296): message : см. объявление "RPCRTAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(333,1): error C2182: RPC_ENTRY: недопустимое использование типа "void"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(333,1): error C2086: int RPC_ENTRY: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(61): message : см. объявление "RPC_ENTRY"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(334,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "NDRSContextMarshall"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(337,11): error C2061: синтаксическая ошибка: идентификатор "NDR_RUNDOWN"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(338,6): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(342,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(340,1): error C2086: int RPCRTAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(296): message : см. объявление "RPCRTAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(341,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "NDR_SCONTEXT"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(349,1): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(350,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(348,1): error C2086: int RPCRTAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(296): message : см. объявление "RPCRTAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(350,1): error C2182: RPC_ENTRY: недопустимое использование типа "void"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(350,1): error C2086: int RPC_ENTRY: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(61): message : см. объявление "RPC_ENTRY"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(351,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "NDRSContextMarshallEx"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(352,31): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(352,11): error C2065: RPC_BINDING_HANDLE: необъявленный идентификатор
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(352,31): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "BindingHandle"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(359,1): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(360,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(358,1): error C2086: int RPCRTAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(296): message : см. объявление "RPCRTAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(360,1): error C2182: RPC_ENTRY: недопустимое использование типа "void"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(360,1): error C2086: int RPC_ENTRY: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(61): message : см. объявление "RPC_ENTRY"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(361,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "NDRSContextMarshall2"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(362,31): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(362,11): error C2065: RPC_BINDING_HANDLE: необъявленный идентификатор
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(362,31): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "BindingHandle"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(372,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(370,1): error C2086: int RPCRTAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(296): message : см. объявление "RPCRTAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(371,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "NDR_SCONTEXT"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(381,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(379,1): error C2086: int RPCRTAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(296): message : см. объявление "RPCRTAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(380,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "NDR_SCONTEXT"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(391,1): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(392,1): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(390,1): error C2086: int RPCRTAPI: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(296): message : см. объявление "RPCRTAPI"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(392,1): error C2182: RPC_ENTRY: недопустимое использование типа "void"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(392,1): error C2086: int RPC_ENTRY: переопределение
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\um\rpcnsip.h(61): message : см. объявление "RPC_ENTRY"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(393,1): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "RpcSsDestroyClientContext"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(395,6): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(557,27): error C2143: синтаксическая ошибка: отсутствие ")" перед "*"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(557,27): error C2143: синтаксическая ошибка: отсутствие ";" перед "*"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(557,27): error C2378: __RPC_USER: переопределение; символ нельзя перегрузить typedef
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(238): message : см. объявление "__RPC_USER"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\rpcndr.h(557,27): fatal error C1003: число ошибок превышает 100; остановка компиляции
1>Сборка проекта "ASI_Project_Template.vcxproj" завершена с ошибкой.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
|
|
|

17.08.2023, 02:16
|
|
Постоянный
Регистрация: 04.06.2020
Сообщений: 620
С нами:
3127813
Репутация:
133
|
|
скинь файл imgui_impl_dx9.cpp
|
|
|

17.08.2023, 02:16
|
|
Познавший АНТИЧАТ
Регистрация: 27.11.2020
Сообщений: 1,431
С нами:
2874035
Репутация:
183
|
|
Сообщение от RedHolms
скинь файл imgui_impl_dx9.cpp
C++:
Код:
// dear imgui: Renderer Backend for DirectX9
// This needs to be used along with a Platform Backend (e.g. Win32)
// Implemented features:
// [X] Renderer: User texture binding. Use 'LPDIRECT3DTEXTURE9' as ImTextureID. Read the FAQ about ImTextureID!
// [X] Renderer: Large meshes support (64k+ vertices) with 16-bit indices.
// You can use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
// Prefer including the entire imgui/ repository into your project (either as a copy or as a submodule), and only build the backends you need.
// If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
// Read online: https://github.com/ocornut/imgui/tree/master/docs
// CHANGELOG
// (minor and older changes stripped away, please see git history for details)
// 2022-10-11: Using 'nullptr' instead of 'NULL' as per our switch to C++11.
// 2021-06-29: Reorganized backend to pull data from a single structure to facilitate usage with multiple-contexts (all g_XXXX access changed to bd->XXXX).
// 2021-06-25: DirectX9: Explicitly disable texture state stages after >= 1.
// 2021-05-19: DirectX9: Replaced direct access to ImDrawCmd::TextureId with a call to ImDrawCmd::GetTexID(). (will become a requirement)
// 2021-04-23: DirectX9: Explicitly setting up more graphics states to increase compatibility with unusual non-default states.
// 2021-03-18: DirectX9: Calling IDirect3DStateBlock9::Capture() after CreateStateBlock() as a workaround for state restoring issues (see #3857).
// 2021-03-03: DirectX9: Added support for IMGUI_USE_BGRA_PACKED_COLOR in user's imconfig file.
// 2021-02-18: DirectX9: Change blending equation to preserve alpha in output buffer.
// 2019-05-29: DirectX9: Added support for large mesh (64K+ vertices), enable ImGuiBackendFlags_RendererHasVtxOffset flag.
// 2019-04-30: DirectX9: Added support for special ImDrawCallback_ResetRenderState callback to reset render state.
// 2019-03-29: Misc: Fixed erroneous assert in ImGui_ImplDX9_InvalidateDeviceObjects().
// 2019-01-16: Misc: Disabled fog before drawing UI's. Fixes issue #2288.
// 2018-11-30: Misc: Setting up io.BackendRendererName so it can be displayed in the About Window.
// 2018-06-08: Misc: Extracted imgui_impl_dx9.cpp/.h away from the old combined DX9+Win32 example.
// 2018-06-08: DirectX9: Use draw_data->DisplayPos and draw_data->DisplaySize to setup projection matrix and clipping rectangle.
// 2018-05-07: Render: Saving/restoring Transform because they don't seem to be included in the StateBlock. Setting shading mode to Gouraud.
// 2018-02-16: Misc: Obsoleted the io.RenderDrawListsFn callback and exposed ImGui_ImplDX9_RenderDrawData() in the .h file so you can call it yourself.
// 2018-02-06: Misc: Removed call to ImGui::Shutdown() which is not available from 1.60 WIP, user needs to call CreateContext/DestroyContext themselves.
#include "imgui.h"
#ifndef IMGUI_DISABLE
#include "imgui_impl_dx9.h"
// DirectX
#include
// DirectX data
struct
ImGui_ImplDX9_Data
{
LPDIRECT3DDEVICE9 pd3dDevice
;
LPDIRECT3DVERTEXBUFFER9 pVB
;
LPDIRECT3DINDEXBUFFER9 pIB
;
LPDIRECT3DTEXTURE9 FontTexture
;
int
VertexBufferSize
;
int
IndexBufferSize
;
ImGui_ImplDX9_Data
(
)
{
memset
(
(
void
*
)
this
,
0
,
sizeof
(
*
this
)
)
;
VertexBufferSize
=
5000
;
IndexBufferSize
=
10000
;
}
}
;
struct
CUSTOMVERTEX
{
float
pos
[
3
]
;
D3DCOLOR col
;
float
uv
[
2
]
;
}
;
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1)
#ifdef IMGUI_USE_BGRA_PACKED_COLOR
#define IMGUI_COL_TO_DX9_ARGB(_COL) (_COL)
#else
#define IMGUI_COL_TO_DX9_ARGB(_COL) (((_COL) & 0xFF00FF00) | (((_COL) & 0xFF0000) >> 16) | (((_COL) & 0xFF)
DisplaySize
.
x
;
vp
.
Height
=
(
DWORD
)
draw_data
->
DisplaySize
.
y
;
vp
.
MinZ
=
0.0f
;
vp
.
MaxZ
=
1.0f
;
bd
->
pd3dDevice
->
SetViewport
(
&
vp
)
;
// Setup render state: fixed-pipeline, alpha-blending, no face culling, no depth testing, shade mode (for gradient), bilinear sampling.
bd
->
pd3dDevice
->
SetPixelShader
(
nullptr
)
;
bd
->
pd3dDevice
->
SetVertexShader
(
nullptr
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_FILLMODE
,
D3DFILL_SOLID
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_SHADEMODE
,
D3DSHADE_GOURAUD
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_ZWRITEENABLE
,
FALSE
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_ALPHATESTENABLE
,
FALSE
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_CULLMODE
,
D3DCULL_NONE
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_ZENABLE
,
FALSE
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_ALPHABLENDENABLE
,
TRUE
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_BLENDOP
,
D3DBLENDOP_ADD
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_SRCBLEND
,
D3DBLEND_SRCALPHA
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_DESTBLEND
,
D3DBLEND_INVSRCALPHA
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_SEPARATEALPHABLENDENABLE
,
TRUE
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_SRCBLENDALPHA
,
D3DBLEND_ONE
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_DESTBLENDALPHA
,
D3DBLEND_INVSRCALPHA
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_SCISSORTESTENABLE
,
TRUE
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_FOGENABLE
,
FALSE
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_RANGEFOGENABLE
,
FALSE
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_SPECULARENABLE
,
FALSE
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_STENCILENABLE
,
FALSE
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_CLIPPING
,
TRUE
)
;
bd
->
pd3dDevice
->
SetRenderState
(
D3DRS_LIGHTING
,
FALSE
)
;
bd
->
pd3dDevice
->
SetTextureStageState
(
0
,
D3DTSS_COLOROP
,
D3DTOP_MODULATE
)
;
bd
->
pd3dDevice
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG1
,
D3DTA_TEXTURE
)
;
bd
->
pd3dDevice
->
SetTextureStageState
(
0
,
D3DTSS_COLORARG2
,
D3DTA_DIFFUSE
)
;
bd
->
pd3dDevice
->
SetTextureStageState
(
0
,
D3DTSS_ALPHAOP
,
D3DTOP_MODULATE
)
;
bd
->
pd3dDevice
->
SetTextureStageState
(
0
,
D3DTSS_ALPHAARG1
,
D3DTA_TEXTURE
)
;
bd
->
pd3dDevice
->
SetTextureStageState
(
0
,
D3DTSS_ALPHAARG2
,
D3DTA_DIFFUSE
)
;
bd
->
pd3dDevice
->
SetTextureStageState
(
1
,
D3DTSS_COLOROP
,
D3DTOP_DISABLE
)
;
bd
->
pd3dDevice
->
SetTextureStageState
(
1
,
D3DTSS_ALPHAOP
,
D3DTOP_DISABLE
)
;
bd
->
pd3dDevice
->
SetSamplerState
(
0
,
D3DSAMP_MINFILTER
,
D3DTEXF_LINEAR
)
;
bd
->
pd3dDevice
->
SetSamplerState
(
0
,
D3DSAMP_MAGFILTER
,
D3DTEXF_LINEAR
)
;
// Setup orthographic projection matrix
// Our visible imgui space lies from draw_data->DisplayPos (top left) to draw_data->DisplayPos+data_data->DisplaySize (bottom right). DisplayPos is (0,0) for single viewport apps.
// Being agnostic of whether or can be used, we aren't relying on D3DXMatrixIdentity()/D3DXMatrixOrthoOffCenterLH() or DirectX::XMMatrixIdentity()/DirectX::XMMatrixOrthographicOffCenterLH()
{
float
L
=
draw_data
->
DisplayPos
.
x
+
0.5f
;
float
R
=
draw_data
->
DisplayPos
.
x
+
draw_data
->
DisplaySize
.
x
+
0.5f
;
float
T
=
draw_data
->
DisplayPos
.
y
+
0.5f
;
float
B
=
draw_data
->
DisplayPos
.
y
+
draw_data
->
DisplaySize
.
y
+
0.5f
;
D3DMATRIX mat_identity
=
{
{
{
1.0f
,
0.0f
,
0.0f
,
0.0f
,
0.0f
,
1.0f
,
0.0f
,
0.0f
,
0.0f
,
0.0f
,
1.0f
,
0.0f
,
0.0f
,
0.0f
,
0.0f
,
1.0f
}
}
}
;
D3DMATRIX mat_projection
=
{
{
{
2.0f
/
(
R
-
L
)
,
0.0f
,
0.0f
,
0.0f
,
0.0f
,
2.0f
/
(
T
-
B
)
,
0.0f
,
0.0f
,
0.0f
,
0.0f
,
0.5f
,
0.0f
,
(
L
+
R
)
/
(
L
-
R
)
,
(
T
+
B
)
/
(
B
-
T
)
,
0.5f
,
1.0f
}
}
}
;
bd
->
pd3dDevice
->
SetTransform
(
D3DTS_WORLD
,
&
mat_identity
)
;
bd
->
pd3dDevice
->
SetTransform
(
D3DTS_VIEW
,
&
mat_identity
)
;
bd
->
pd3dDevice
->
SetTransform
(
D3DTS_PROJECTION
,
&
mat_projection
)
;
}
}
// Render function.
void
ImGui_ImplDX9_RenderDrawData
(
ImDrawData
*
draw_data
)
{
// Avoid rendering when minimized
if
(
draw_data
->
DisplaySize
.
x
DisplaySize
.
y
pVB
||
bd
->
VertexBufferSize
TotalVtxCount
)
{
if
(
bd
->
pVB
)
{
bd
->
pVB
->
Release
(
)
;
bd
->
pVB
=
nullptr
;
}
bd
->
VertexBufferSize
=
draw_data
->
TotalVtxCount
+
5000
;
if
(
bd
->
pd3dDevice
->
CreateVertexBuffer
(
bd
->
VertexBufferSize
*
sizeof
(
CUSTOMVERTEX
)
,
D3DUSAGE_DYNAMIC
|
D3DUSAGE_WRITEONLY
,
D3DFVF_CUSTOMVERTEX
,
D3DPOOL_DEFAULT
,
&
bd
->
pVB
,
nullptr
)
pIB
||
bd
->
IndexBufferSize
TotalIdxCount
)
{
if
(
bd
->
pIB
)
{
bd
->
pIB
->
Release
(
)
;
bd
->
pIB
=
nullptr
;
}
bd
->
IndexBufferSize
=
draw_data
->
TotalIdxCount
+
10000
;
if
(
bd
->
pd3dDevice
->
CreateIndexBuffer
(
bd
->
IndexBufferSize
*
sizeof
(
ImDrawIdx
)
,
D3DUSAGE_DYNAMIC
|
D3DUSAGE_WRITEONLY
,
sizeof
(
ImDrawIdx
)
==
2
?
D3DFMT_INDEX16
:
D3DFMT_INDEX32
,
D3DPOOL_DEFAULT
,
&
bd
->
pIB
,
nullptr
)
pd3dDevice
->
CreateStateBlock
(
D3DSBT_ALL
,
&
d3d9_state_block
)
Capture
(
)
Release
(
)
;
return
;
}
// Backup the DX9 transform (DX9 documentation suggests that it is included in the StateBlock but it doesn't appear to)
D3DMATRIX last_world
,
last_view
,
last_projection
;
bd
->
pd3dDevice
->
GetTransform
(
D3DTS_WORLD
,
&
last_world
)
;
bd
->
pd3dDevice
->
GetTransform
(
D3DTS_VIEW
,
&
last_view
)
;
bd
->
pd3dDevice
->
GetTransform
(
D3DTS_PROJECTION
,
&
last_projection
)
;
// Allocate buffers
CUSTOMVERTEX
*
vtx_dst
;
ImDrawIdx
*
idx_dst
;
if
(
bd
->
pVB
->
Lock
(
0
,
(
UINT
)
(
draw_data
->
TotalVtxCount
*
sizeof
(
CUSTOMVERTEX
)
)
,
(
void
*
*
)
&
vtx_dst
,
D3DLOCK_DISCARD
)
Release
(
)
;
return
;
}
if
(
bd
->
pIB
->
Lock
(
0
,
(
UINT
)
(
draw_data
->
TotalIdxCount
*
sizeof
(
ImDrawIdx
)
)
,
(
void
*
*
)
&
idx_dst
,
D3DLOCK_DISCARD
)
pVB
->
Unlock
(
)
;
d3d9_state_block
->
Release
(
)
;
return
;
}
// Copy and convert all vertices into a single contiguous buffer, convert colors to DX9 default format.
// FIXME-OPT: This is a minor waste of resource, the ideal is to use imconfig.h and
// 1) to avoid repacking colors: #define IMGUI_USE_BGRA_PACKED_COLOR
// 2) to avoid repacking vertices: #define IMGUI_OVERRIDE_DRAWVERT_STRUCT_LAYOUT struct ImDrawVert { ImVec2 pos; float z; ImU32 col; ImVec2 uv; }
for
(
int
n
=
0
;
n
CmdListsCount
;
n
++
)
{
const
ImDrawList
*
cmd_list
=
draw_data
->
CmdLists
[
n
]
;
const
ImDrawVert
*
vtx_src
=
cmd_list
->
VtxBuffer
.
Data
;
for
(
int
i
=
0
;
i
VtxBuffer
.
Size
;
i
++
)
{
vtx_dst
->
pos
[
0
]
=
vtx_src
->
pos
.
x
;
vtx_dst
->
pos
[
1
]
=
vtx_src
->
pos
.
y
;
vtx_dst
->
pos
[
2
]
=
0.0f
;
vtx_dst
->
col
=
IMGUI_COL_TO_DX9_ARGB
(
vtx_src
->
col
)
;
vtx_dst
->
uv
[
0
]
=
vtx_src
->
uv
.
x
;
vtx_dst
->
uv
[
1
]
=
vtx_src
->
uv
.
y
;
vtx_dst
++
;
vtx_src
++
;
}
memcpy
(
idx_dst
,
cmd_list
->
IdxBuffer
.
Data
,
cmd_list
->
IdxBuffer
.
Size
*
sizeof
(
ImDrawIdx
)
)
;
idx_dst
+=
cmd_list
->
IdxBuffer
.
Size
;
}
bd
->
pVB
->
Unlock
(
)
;
bd
->
pIB
->
Unlock
(
)
;
bd
->
pd3dDevice
->
SetStreamSource
(
0
,
bd
->
pVB
,
0
,
sizeof
(
CUSTOMVERTEX
)
)
;
bd
->
pd3dDevice
->
SetIndices
(
bd
->
pIB
)
;
bd
->
pd3dDevice
->
SetFVF
(
D3DFVF_CUSTOMVERTEX
)
;
// Setup desired DX state
ImGui_ImplDX9_SetupRenderState
(
draw_data
)
;
// Render command lists
// (Because we merged all buffers into a single one, we maintain our own offset into them)
int
global_vtx_offset
=
0
;
int
global_idx_offset
=
0
;
ImVec2 clip_off
=
draw_data
->
DisplayPos
;
for
(
int
n
=
0
;
n
CmdListsCount
;
n
++
)
{
const
ImDrawList
*
cmd_list
=
draw_data
->
CmdLists
[
n
]
;
for
(
int
cmd_i
=
0
;
cmd_i
CmdBuffer
.
Size
;
cmd_i
++
)
{
const
ImDrawCmd
*
pcmd
=
&
cmd_list
->
CmdBuffer
[
cmd_i
]
;
if
(
pcmd
->
UserCallback
!=
nullptr
)
{
// User callback, registered via ImDrawList::AddCallback()
// (ImDrawCallback_ResetRenderState is a special callback value used by the user to request the renderer to reset render state.)
if
(
pcmd
->
UserCallback
==
ImDrawCallback_ResetRenderState
)
ImGui_ImplDX9_SetupRenderState
(
draw_data
)
;
else
pcmd
->
UserCallback
(
cmd_list
,
pcmd
)
;
}
else
{
// Project scissor/clipping rectangles into framebuffer space
ImVec2
clip_min
(
pcmd
->
ClipRect
.
x
-
clip_off
.
x
,
pcmd
->
ClipRect
.
y
-
clip_off
.
y
)
;
ImVec2
clip_max
(
pcmd
->
ClipRect
.
z
-
clip_off
.
x
,
pcmd
->
ClipRect
.
w
-
clip_off
.
y
)
;
if
(
clip_max
.
x
GetTexID
(
)
;
bd
->
pd3dDevice
->
SetTexture
(
0
,
texture
)
;
bd
->
pd3dDevice
->
SetScissorRect
(
&
r
)
;
bd
->
pd3dDevice
->
DrawIndexedPrimitive
(
D3DPT_TRIANGLELIST
,
pcmd
->
VtxOffset
+
global_vtx_offset
,
0
,
(
UINT
)
cmd_list
->
VtxBuffer
.
Size
,
pcmd
->
IdxOffset
+
global_idx_offset
,
pcmd
->
ElemCount
/
3
)
;
}
}
global_idx_offset
+=
cmd_list
->
IdxBuffer
.
Size
;
global_vtx_offset
+=
cmd_list
->
VtxBuffer
.
Size
;
}
// Restore the DX9 transform
bd
->
pd3dDevice
->
SetTransform
(
D3DTS_WORLD
,
&
last_world
)
;
bd
->
pd3dDevice
->
SetTransform
(
D3DTS_VIEW
,
&
last_view
)
;
bd
->
pd3dDevice
->
SetTransform
(
D3DTS_PROJECTION
,
&
last_projection
)
;
// Restore the DX9 state
d3d9_state_block
->
Apply
(
)
;
d3d9_state_block
->
Release
(
)
;
}
bool
ImGui_ImplDX9_Init
(
IDirect3DDevice9
*
device
)
{
ImGuiIO
&
io
=
ImGui
::
GetIO
(
)
;
IM_ASSERT
(
io
.
BackendRendererUserData
==
nullptr
&&
"Already initialized a renderer backend!"
)
;
// Setup backend capabilities flags
ImGui_ImplDX9_Data
*
bd
=
IM_NEW
(
ImGui_ImplDX9_Data
)
(
)
;
io
.
BackendRendererUserData
=
(
void
*
)
bd
;
io
.
BackendRendererName
=
"imgui_impl_dx9"
;
io
.
BackendFlags
|=
ImGuiBackendFlags_RendererHasVtxOffset
;
// We can honor the ImDrawCmd::VtxOffset field, allowing for large meshes.
bd
->
pd3dDevice
=
device
;
bd
->
pd3dDevice
->
AddRef
(
)
;
return
true
;
}
void
ImGui_ImplDX9_Shutdown
(
)
{
ImGui_ImplDX9_Data
*
bd
=
ImGui_ImplDX9_GetBackendData
(
)
;
IM_ASSERT
(
bd
!=
nullptr
&&
"No renderer backend to shutdown, or already shutdown?"
)
;
ImGuiIO
&
io
=
ImGui
::
GetIO
(
)
;
ImGui_ImplDX9_InvalidateDeviceObjects
(
)
;
if
(
bd
->
pd3dDevice
)
{
bd
->
pd3dDevice
->
Release
(
)
;
}
io
.
BackendRendererName
=
nullptr
;
io
.
BackendRendererUserData
=
nullptr
;
io
.
BackendFlags
&=
~
ImGuiBackendFlags_RendererHasVtxOffset
;
IM_DELETE
(
bd
)
;
}
static
bool
ImGui_ImplDX9_CreateFontsTexture
(
)
{
// Build texture atlas
ImGuiIO
&
io
=
ImGui
::
GetIO
(
)
;
ImGui_ImplDX9_Data
*
bd
=
ImGui_ImplDX9_GetBackendData
(
)
;
unsigned
char
*
pixels
;
int
width
,
height
,
bytes_per_pixel
;
io
.
Fonts
->
GetTexDataAsRGBA32
(
&
pixels
,
&
width
,
&
height
,
&
bytes_per_pixel
)
;
// Convert RGBA32 to BGRA32 (because RGBA32 is not well supported by DX9 devices)
#ifndef IMGUI_USE_BGRA_PACKED_COLOR
if
(
io
.
Fonts
->
TexPixelsUseColors
)
{
ImU32
*
dst_start
=
(
ImU32
*
)
ImGui
::
MemAlloc
(
(
size_t
)
width
*
height
*
bytes_per_pixel
)
;
for
(
ImU32
*
src
=
(
ImU32
*
)
pixels
,
*
dst
=
dst_start
,
*
dst_end
=
dst_start
+
(
size_t
)
width
*
height
;
dst
FontTexture
=
nullptr
;
if
(
bd
->
pd3dDevice
->
CreateTexture
(
width
,
height
,
1
,
D3DUSAGE_DYNAMIC
,
D3DFMT_A8R8G8B8
,
D3DPOOL_DEFAULT
,
&
bd
->
FontTexture
,
nullptr
)
FontTexture
->
LockRect
(
0
,
&
tex_locked_rect
,
nullptr
,
0
)
!=
D3D_OK
)
return
false
;
for
(
int
y
=
0
;
y
FontTexture
->
UnlockRect
(
0
)
;
// Store our identifier
io
.
Fonts
->
SetTexID
(
(
ImTextureID
)
bd
->
FontTexture
)
;
#ifndef IMGUI_USE_BGRA_PACKED_COLOR
if
(
io
.
Fonts
->
TexPixelsUseColors
)
ImGui
::
MemFree
(
pixels
)
;
#endif
return
true
;
}
bool
ImGui_ImplDX9_CreateDeviceObjects
(
)
{
ImGui_ImplDX9_Data
*
bd
=
ImGui_ImplDX9_GetBackendData
(
)
;
if
(
!
bd
||
!
bd
->
pd3dDevice
)
return
false
;
if
(
!
ImGui_ImplDX9_CreateFontsTexture
(
)
)
return
false
;
return
true
;
}
void
ImGui_ImplDX9_InvalidateDeviceObjects
(
)
{
ImGui_ImplDX9_Data
*
bd
=
ImGui_ImplDX9_GetBackendData
(
)
;
if
(
!
bd
||
!
bd
->
pd3dDevice
)
return
;
if
(
bd
->
pVB
)
{
bd
->
pVB
->
Release
(
)
;
bd
->
pVB
=
nullptr
;
}
if
(
bd
->
pIB
)
{
bd
->
pIB
->
Release
(
)
;
bd
->
pIB
=
nullptr
;
}
if
(
bd
->
FontTexture
)
{
bd
->
FontTexture
->
Release
(
)
;
bd
->
FontTexture
=
nullptr
;
ImGui
::
GetIO
(
)
.
Fonts
->
SetTexID
(
0
)
;
}
// We copied bd->pFontTextureView to io.Fonts->TexID so let's clear that as well.
}
void
ImGui_ImplDX9_NewFrame
(
)
{
ImGui_ImplDX9_Data
*
bd
=
ImGui_ImplDX9_GetBackendData
(
)
;
IM_ASSERT
(
bd
!=
nullptr
&&
"Did you call ImGui_ImplDX9_Init()?"
)
;
if
(
!
bd
->
FontTexture
)
ImGui_ImplDX9_CreateDeviceObjects
(
)
;
}
//-----------------------------------------------------------------------------
#endif
// #ifndef IMGUI_DISABLE
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|