Bunların hepsi iyi cevaplar ve yine de başka bir yol var: (Her zaman yok mu?)
Sanal gerçekliğin artan popülaritesi nedeniyle, OculusVR'deki insanlar "Multiview" uzantılarının üçlüsünü geliştirdiler:
- OVR_multiview ,
- OVR_multiview2 , &
- OVR_multiview_multisampled_render_to_texture
Bu uzantılar, aynı sahnenin birden çok görünümünün tek bir çizim çağrısında oluşturulmasına izin vererek, aynı sahnenin her bir gözün bakış açısından aynı durumda oluşturulmasının fazlalığını ortadan kaldırır. VR amacıyla oluşturulmuş olsa da, geliştirici sadece iki görünümle sınırlı değildir. Aksine, bu uzantı MAX_VIEWS_OVR tarafından belirtilen sayıda görünüme izin verir .
Bu uzantıları kullanmadan önce geliştirici, aşağıdaki kodu ekleyerek kullanıcının grafik sürücüsünde desteklerini kontrol etmelidir:
const GLubyte* extensions = GL_CHECK( glGetString( GL_EXTENSIONS ) );
char * found_extension = strstr( (const char*)extensions, "GL_OVR_multiview" );
if (NULL == found_extension)
{
exit( EXIT_FAILURE );
}
Oradan, bu özelliği kullanmak için çerçeve aracınızın ayarlanması önemlidir:
glFramebufferTextureMultisampledMultiviewOVR = PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEDMULTIVIEWOVR(eglGetProcAddress("glFramebufferTextureMultisampleMultiviewOVR"));
glFramebufferTextureMultisampledMultiviewOVR (GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, textureID, 0, 0, 2);
ve aynı şekilde gölgelendiricide:
#version 300 es
#extension GL_OVR_multiview : enable
layout(num_views = 2) in;
in vec3 vertexPosition;
uniform mat4 MVP[2];
void main(){
gl_Position = MVP[gl_ViewID_OVR] * vec4(vertexPosition, 1.0f);
}
CPU bağlantılı bir uygulamada bu uzantı , özellikle daha karmaşık sahnelerde oluşturma süresini önemli ölçüde azaltabilir :