OpenGL - Woher weiß man ob Hardware angesprochen wird?



  • Hallo an alle OpenGL (Hobby)Programmierer!
    Ich wollte einfach mal Fragen, woran man eigentlich merkt, ob man ein (selbstgeschriebenes) Programm die Hardware (Grafikkarte) und keine Softwareemulation für die Grafiken benutzt?
    Denn ich hab gemerkt, das einige 3D-Bewegungen im kleinen Fenster schneller ablaufen als im Größeren Fenster, und das extrem (ich hab keine FPS Beschränkung eingebaut).



  • Nach dem Erstellen des Pixelformats kann man mit DescribePixelFormat() abfragen, welche Eigenschaften des Format hat. Man kann nach dem Aufruf dieser Funktion den Flag PIXELFORMATDESCRIPTOR::dwFlags auf die Flags PFD_GENERIC_ACCELERTED und PFD_GENERIC_FORMAT testen.Ersteres steht fure Hardwareunterstuetzung.



  • Und wenn man nicht gerade für Windows programmiert oder Glut benutzt?



  • Sollte eigentlich 'ne Möglchkeit geben den Namen der Grafikdevice zu bekommen, wenn das die GraKa ist => HW.



  • @TGCC: Das währ dann wohl glGetString( GL_VENDOR )



  • Original erstellt von SnorreDev:
    @TGCC: Das währ dann wohl glGetString( GL_VENDOR )

    Bin planlos bei OGL.



  • Original erstellt von SnorreDev:
    @TGCC: Das währ dann wohl glGetString( GL_VENDOR )

    Ich bekomme dabei:
    NVIDIA Corporation
    raus. Aber irgendwie hilft mir das auch nicht weiter.



  • sicher. von nvidia ist die grafikkarte die verwendet wird, wenn diese nicht verwendet wird wird irgendein anderer scheiß dastehen.



  • Versuchs mal mit glGetString( GL_RENDERER ) fuer das device. das bei GL_VENDOR NVIDIA rauskommt, ist logisch, weil man damit nach dem Hersteller fragt, also NV.



  • Ja - das stimmt schon - allerdings, wieviele Device Namen will man denn abfragen?
    Schon alleine die verschiedenen ATI & NV Devices reichen aus, um ne Big List hinzubekommen



  • @SnorreDev: Was meinst Du?



  • Ganz einfach, wenn der Vendor ATI, NVidia oder Matrox ist, dann ist es normalerweise ein Hardware Device würd ich mal sagen.

    Hab das zwar noch nie mit nem Software Device probiert, aber da müßte dann als Vendor Microsoft drin stehen bei Windows.

    Bei vendor steht ja der Hersteller des Treibers für das Device drin

    Aber bei der Glut müßte es auch ne möglichkeit geben, festzustellen, ob HW oder SW

    [ Dieser Beitrag wurde am 18.04.2003 um 05:01 Uhr von SnorreDev editiert. ]



  • Ich will euch jetzt nicht verwirren, aber dass man mit Hardware rendert heißt noch lange nicht, das die Extensions auch über die Hardware laufen.
    Bsp:
    Meine Geforce 2 unterstützt hardwareseitig keine VertexPrograms (== VertexShader),
    trotzdem kann ich sowohl die ARB als auch die NV-Extensions benutzen.
    Beide funktionieren, nur eben sehr ähm gemächlich.



  • Eigentlich ist es egal, ob man Glut benutzt oder sonst irgendeine API, die auf OpenGL aufbaut, solange sie auf OpenGL aufbaut. Dann kann man immer mit glGetString() arbeiten. Der Test mit dem Hersteller oder dem Devicename ist schlecht. Besser ist die oben genannte Methode, bei der man genau feststellen kann, ob ein ICD, MCD oder Software Modus verwendet wird. Noch besser ist, wenn man WGL_ARB_pixel_format benutzt. Damit hat man mehr Kontrolle.

    @Kane: Stimmt, der Treiber kann sowas emulieren. Der Unterschied wird deutlich, wennn man eine Grafikkarte verwendet, die z.B. Vertex Programs hardwareseitig unterstuetzt. Im Softwaremodus wird dann die CPU belastet, im Hardwaremodus die GPU.


Anmelden zum Antworten