컴포 지터를 사용하여 HTC Vive에 텍스처를 제출하려고했습니다. "TextureUsesUnsupportedFormat"인 105 개의 오류가 계속 발생합니다. 텍스처는 bmp 이미지 24 비트 깊이입니다. hellovr 샘플을 보았지만 여전히 약간 혼란 스럽습니다. 또한 Vive가 텍스처에 RGBA8 형식을 필요로하지만 실제로 만드는 방법을 알지 못했습니다. 각 눈 포트를 채우는 텍스처를 얻으려고합니다.
내가 도대체 뭘 잘못하고있는 겁니까?
텍스처 및 텍스처 ID를 검색하는 코드는 다음과 같습니다.
Loading_Surf = SDL_LoadBMP("Test.bmp");
Background_Tx = SDL_CreateTextureFromSurface(renderer, Loading_Surf);
if (!Loading_Surf) {
return 0;
}
glGenTextures(1, &textureid);
glBindTexture(GL_TEXTURE_2D, textureid);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, Loading_Surf->w, Loading_Surf->h, 0, mode, GL_UNSIGNED_BYTE, Loading_Surf->pixels);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
SDL_FreeSurface(Loading_Surf);
SDL_RenderCopy(renderer, Background_Tx, NULL, NULL);
SDL_RenderPresent(renderer);
return textureid;
Vive 코드에 제출 :
vr::Texture_t l_Eye = { (void*)frameID, vr::API_OpenGL, vr::ColorSpace_Gamma };
std::cout << vr::VRCompositor()->WaitGetPoses(ViveTracked, vr::k_unMaxTrackedDeviceCount, NULL, 0);
error = vr::VRCompositor()->Submit(vr::Eye_Left, &l_Eye);
이 답변에서 언급했듯이 먼저 올바른 RGBA8 형식으로 표면을 만들어야 할 수도 있습니다. https://gamedev.stackexchange.com/a/109067/6920
원하는 정확한 이미지 형식으로 임시 표면 (SDL_CreateRGBSurface)을 생성 한 다음 Loading_Surf를 해당 임시 표면 (SDL_BlitSurface)에 복사합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다