Я создаю компонент Delphi для встраивания поверхности рендеринга SDL в форму VCL. Он работает нормально, пока форма находится на экране в момент создания поверхности SDL. В противном случае он не сможет создать текстуры рендеринга.
Я проследил код SDL и получил следующий вызов функции, который не работает (возвращает NULL):
data->hbm = CreateDIBSection(renderdata->memory_hdc, bmi, DIB_RGB_COLORS, &data->pixels, NULL, 0);
HDC является допустимым дескриптором контекста рисования, принадлежащего элементу управления, который имеет собственный дескриптор окна HWND, настроенный должным образом. Но когда элемент управления создается вне экрана, что обычно происходит в Delphi (все формы с их элементами управления создаются в скрытом состоянии до тех пор, пока не придет время их отобразить), вызов CreateDIBSection завершится ошибкой до тех пор, пока элемент управления не станет видимым.
Кроме того, если он создается на экране, а затем скрывается и снова отображается (например, если он находится на вкладке и я переключаю вкладки), любые текстуры, которые я создаю, становятся пустыми во время этого процесса.
Это сводит меня с ума. Кто-нибудь знает, что происходит и как я могу обойти это?