Визуализация в текстовый массив с аппаратным обеспечением ATI - PullRequest
0 голосов
/ 16 апреля 2011

У меня есть реализация OpenGL, которая предположительно должна позволять рендерить в массив текстур. Это путем выбора различных слоев в геометрическом шейдере. Однако проблема в том, что это не работает из-за ошибки драйвера ATI. Мне бы очень хотелось, чтобы это сработало, и у меня есть несколько вариантов того, как действовать:

  1. Переделать реализацию в Direct3D, лучше драйверы ATI в D3D?
  2. Придумайте обходной путь (хотя и не могу придумать ни одного).
  3. Купите карту nVidia.

Что мне делать? Любые другие альтернативы?

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Это устаревший способ, но он должен работать на картах ATI.Это отображает карту глубины в текстуру, но вы можете визуализировать почти все.

// generate texture (in init method)
init(){...
glGenTextures(1, &depthTexture);
glBindTexture(GL_TEXTURE_2D, depthTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 512,
512, 0, GL_DEPTH_COMPONENT,GL_FLOAT, 0);}

// draw the mesh to fill the depth buffer
glDisable(GL_LIGHTING);
draw_mesh();
// copy depth buffer to texture
glBindTexture(GL_TEXTURE_2D, depthTexture);
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, 512, 512);
// clear screen
cls();
// enable texturing and bind the depth texture
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, depthTexture);
// overlay texture to fullsizequad
drawFullsizeQuad();
0 голосов
/ 17 апреля 2011

Подумайте о регистрации ошибки в ATI: ваш тестовый пример (многоуровневая отрисовка) должен быть небольшим и воспроизводимым на 100%.

...