2011-05-17 23 views
9

Sé cómo abrir una ventana con OpenGL (usando Win32 u otros kits de herramientas). Pero cuando el sistema tiene 2 tarjetas gráficas. ¿Cómo selecciono un dispositivo gráfico para renderizar? Mi lenguaje de programación es C++ y me estoy enfocando en Windows, pero cualquier muestra será bienvenida.Seleccione un dispositivo gráfico en Windows + OpenGL

Editar: Tal vez Es una buena idea explicar mejor mi problema, para agregar algo de perspectiva: Mi nueva computadora portátil tiene dos tarjetas gráficas. Un Intel HD integrado y un GeForce GT 540M. La tarjeta intel funciona la mayor parte del tiempo para procesar SO, ya que ahorra batería. Cuando se inicia un juego, entonces GeForce se inicia automáticamente. Este sistema se llama "optimus" por nvidia (http://www.nvidia.com/object/optimus_technology.html). El problema es que cuando inicio mi aplicación, el controlador de opengl detectado es 2.1 y el proveedor es Intel, y no sé cómo cambiar al otro dispositivo.

Finalmente encontré esta información. No es muy útil si no está usando nvidia pero se lo dejo a cualquiera que pueda leer http://developer.download.nvidia.com/compute/cuda/3_2/toolkit/docs/CUDA_Developer_Guide_for_Optimus_Platforms.pdf

Respuesta

6

No estoy 100% seguro, pero parece recordar que en Windows esto no es posible, aparte de crear una ventana en una pantalla específica.

NVidia proporcionó una extensión llamada WGL_NV_gpu_affinity. No estoy seguro si esto todavía está disponible y si funciona como te gustaría.

Editar:

veo que información similar ya está prevista en another thread, con un enlace a additonal this PDF. No es una respuesta satisfactoria tal vez, pero al menos algo de información.

+1

El hecho de que esta extensión se llame WGL_nv_gpu_affinity, dice que es para Windows, es el de Linux (GLX _...) el que falta, creo. Pero ATI/AMD tiene una extensión similar llamada AMD_gpu_association, que tiene versiones para Windows (WGL) y Linux (GLX). –

+0

Por supuesto, tienes razón (necesito café). Editado mi respuesta, aunque no es mucho de uno. : s – Bart

+0

Creo que seleccionar el dispositivo (incluso un dispositivo basado en software) es una opción en directX. Tal vez exista esa forma de seleccionar el dispositivo en el kit de herramientas de win32. – Killrazor

1

debe usar la extensión WGL_NV_gpu_affinity para programar con múltiples GPU con OpenGL. (en el caso, tarjeta NVIDIA). Pero solo es compatible con la serie QUADRO. Desafortunadamente, no puede seleccionar la representación de la tarjeta gráfica en su sistema.

10

La solución más simple de Nvidia Optimus es pegar este fragmento de código en algún lugar de su aplicación. Esto le indicará al controlador de Nvidia que cambie a la potente GPU cuando se inicie la aplicación.

// enable optimus! 
extern "C" { 
    _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; 
} 
+4

Para el equivalente de AMD, consulte la pregunta [this] (http://stackoverflow.com/questions/17458803/amd-equivalent-to-nvoptimusenablement). – fkorsa

2

Vaya a Nvidia Panel de control> Gestionar ajustes en 3D> seleccione el procesador de gráficos preferido. Por defecto, puede ver la selección automática. Cámbielo a su GPU deseada.

+0

Su respuesta es apropiada para un usuario final pero no tanto para un desarrollador. Sin embargo, sigue siendo bueno cuando se prueba, gracias. – legends2k

Cuestiones relacionadas