Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


OpenGL, win32 och trådar

Postades av 2005-05-30 09:42:17 - Kristofer Pettersson, i forum spel/grafik, Tråden har 2 Kommentarer och lästs av 1200 personer

Hej!
Jag håller på att skriva en rendreringsmotor i MS Visual C++. Jag har genererat en tråd som jag kallar gamepanel som tar ett nyligen öppnat fönster (HWND) som argument och skapar en GL-rendreringskontext. Därefter placerar sig tråden i en loop där den försöker hålla konstant UPS givet en variabel FPS. Problemet är nu att den enda respons jag får från OpenGL är när jag kör kommandot glClear(GL_COLOR_BUFFER_BIT). Alla glBegin(xx) ... glEnd() glFinish() verkar bli helt ignorerade.
Finns det någon som känner igen det här problemet? Kan det ha med trådningen att göra?


Svara

Sv: OpenGL, win32 och trådar

Postades av 2005-05-30 10:31:53 - Andreas Paulsson

Hur utför du trådningen? Eller snarare, vilken tråd ritar?

Ett OpenGL-context kan bara vara current i en tråd åt gången (däremot så kan den skapas i en tråd och användas i en anna tråd).

Och hur har du gjort synkroniseringen med Windows-fönstret? Ritar du efter ett DRAW-meddelande eller ritar du litet när som helst?

Att låta en generell tråd som inte är GUI-tråden driva OpenGL kan nog vara svårt att få till (jag tror inte ens att det går) eftersom du ändå måste synkronisera med GUI-tråden vid ritning. Det är betydligt bättre att lägga beräkningar (datainläsningar, analyser, AI osv) i andra trådar och låta GUI-tråden styra uppdateringen (se dock tilll att du trådsäkrar access mot de datastrukturer som de andra trådarna använder).

Tips om bra bok : "3D Game Engine Design: A Practical Approach to Real-Time Computer Graphics" (se http://www.adlibris.se/shop/product.asp?isbn=1558605932 ), bra bok som går igenom allt plus att du får komplett källkod för hela renderingsmotorn. Mycket bra inspirationskälla med bra motiveringar till designbeslut.

En sista fråga: varför gör du en egen motor? Om det är för hobbybruk så är det nog OK (utmärkt övning), men är det för kommersiellt bruk så kommer du förmodligen aldrig att tjäna in den investeringen. Använd Open Scene graph eller liknande istället.

/Andreas


Svara

Sv:OpenGL, win32 och trådar

Postades av 2005-05-30 12:28:59 - Kristofer Pettersson

Tack för boktipset!

Jag har lagt en SwapBuffers i samma tråd som tillverkar Rendering Context. Enligt vad jag läste så går det att ha flera parallella trådar som var och en har en DC som de själva har konstruerat. Det blir eventuellt lite odefinierat vilken ordning de skriver i dock.

Jag anropar swapbuffers enligt följande mall:
gameUpdate
gameRender
paintScreen (tvingande, swapbufffer, eller via meddelande till windows kernel)

Därefter mäter jag hur lång tid operationerna tog att utföra. Jag försöker få Updates Per Second (UPS) att vara konstant, samtidigt att jag försöker få _variabla_ Frames Per Second (FPS) att vara så nära en angiven övre konstant som möjligt.

Tråden gör en sleep i ett antal millisekunder för att kompensera för snabba värden på FPS och ett antal "FPS skips" för att kompensera för låga UPS.

Jag skriver en egen motor för att uppdatera mina c++-kunskaper som halkat efter lite, så min motor blir en kopia av ett projekt jag gjort tidigare i java. Motorn behöver inte bli ett kommerciellt gångbart API, men vara tillräckligt bra för att mina matematiska tricks framställs i god dager. ;-)
Dessutom behöver jag detaljkunskaper för att kunna applicera ideerna i slutna system som inte har förutsättningarna för Open Scene graph.

Jag gjorde ett experiment (fel) där jag la Render Context i en annan tråd och då fungerade inte glClear heller. Nu kan jag dock sätta bakgrundsfärg via glClear, men ändå inte rita något.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 808
27 960
271 761
598
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies
Expand
next previous
Close

Previous

0/0

Next