Существует много причин, по которым текстура может отображаться некорректно при рендеринге некоторой геометрии.
Но если предположить, что ваша проблема не связана ни с одной из этих вещей, таких как некорректный UVS, проблемы с шейдером, создание текстуры и т. Д.Эта проблема может быть связана с тем, что вы сейчас управляете несколькими контекстами.
Чтобы настроить несколько окон, вам необходимо создать контекст для каждого окна.Функция wglMakeCurrent позволяет вам переключать контекст для каждого окна, рендеринг на ходу.
https://docs.microsoft.com/en-us/windows/desktop/api/wingdi/nf-wingdi-wglmakecurrent
Функция wglMakeCurrent создает указанный контекст визуализации OpenGL в текущем контексте визуализации вызывающего потока.Все последующие вызовы OpenGL, сделанные потоком, отрисовываются на устройстве, идентифицированном hdc.Вы также можете использовать wglMakeCurrent, чтобы изменить текущий контекст рендеринга вызывающего потока, чтобы он больше не был текущим.
Контекст OpenGL представляет буфер кадра по умолчанию (место по умолчанию, в которое ваш шейдер будет выводить при рендеринге), но этотакже хранит все состояния, связанные с этим экземпляром OpenGL.
Более того:
Каждый контекст имеет свой собственный набор объектов OpenGL, которые не зависят от других контекстов.
Таким образом, это означает, что каждый контекст не имеет доступа к одним и тем же ресурсам, если не указано явно.
Любое совместное использование объекта должно выполняться явно, либо при создании контекста.или до того, как вновь созданный контекст создает какие-либо объекты.Однако контексты не должны совместно использовать объекты;они могут оставаться полностью отделенными друг от друга.
Поэтому одна из причин, по которой вы можете отображать одну и ту же текстуру (ы) в каждом окне, заключается в том, что эта текстура не является общим ресурсом.glClearColor отлично работает, поскольку он не зависит от каких-либо ресурсов, связанных с каким-либо конкретным контекстом.