এগুলি সব ভাল উত্তর, এবং এখনও অন্য উপায় আছে: (সবসময় আছে না?)
ভার্চুয়াল বাস্তবতার ক্রমবর্ধমান জনপ্রিয়তার কারণে, ওকুলাসভিআর-এর লোকেরা "মাল্টিভিউ" এক্সটেনশনের একটি ত্রয়ী বিকাশ করেছেন:
- ওভিআর_ মাল্টিভিউ ,
- ওভিআর_ মাল্টিভিউ 2 , এবং
- OVR_multiview_multisampled_render_to_texture
এই এক্সটেনশনগুলি একই দৃশ্যের একাধিক ভিউগুলিকে একক ড্র কলে উপস্থাপনের অনুমতি দেয় এবং একই দৃষ্টিভঙ্গি থেকে একই দৃশ্যে একই দৃশ্য উপস্থাপনের অপ্রয়োজনীয়তা দূর করে। যদিও ভিআর এর উদ্দেশ্যে তৈরি করা হয়েছে, বিকাশকারী অগত্যা কেবলমাত্র দুটি মতামতের মধ্যে সীমাবদ্ধ নয়। বরং, এই এক্সটেনশানটি MAX_VIEWS_OVR হিসাবে নির্দিষ্ট হিসাবে যতগুলি দর্শন করার অনুমতি দেয় ।
এই এক্সটেনশনগুলি ব্যবহার করার আগে, বিকাশকারীকে নিম্নলিখিত কোড যুক্ত করে ব্যবহারকারীর গ্রাফিক্স ড্রাইভারটিতে তাদের সমর্থন যাচাই করা উচিত:
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 );
}
সেখান থেকে, এই বৈশিষ্ট্যটি কাজে লাগাতে আপনার ফ্রেমবফার সেটআপ করার বিষয়টি:
glFramebufferTextureMultisampledMultiviewOVR = PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEDMULTIVIEWOVR(eglGetProcAddress("glFramebufferTextureMultisampleMultiviewOVR"));
glFramebufferTextureMultisampledMultiviewOVR (GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, textureID, 0, 0, 2);
এবং একইভাবে শেডারে:
#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);
}
একটি সিপিইউ-বাউন্ড অ্যাপ্লিকেশনটিতে, এই এক্সটেনশনটি রেন্ডারিং সময়কে নাটকীয়ভাবে হ্রাস করতে পারে, বিশেষত আরও জটিল দৃশ্যের সাথে :