[C++]Platform onafhankelijk pixels aansturen

Pagina: 1
Acties:

  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
Ik ben van plan om een mini 3d engine te schrijven waarbij je om een vierkant heen kan draaien, alleen om het princiepe uit te leggen. Ik zelf code onder linux maar het liefst zou ik ook willen dat de source onder windows/dos te compilen is. Het enige probleem wat je tegenkomt is het maken van de window waar je de pixels in aanstuurd. Google leerde mij dat ik onder windows de fucntie putpixel() kan opvragen maar helaas gaat dit alleen onder windows/dos werken. Wat wel platform onafhankelijk zou werken is opengl maar heeft mijn ouder laptop bijvoorbeeld weer niet plus worden een paar essentiele dingen al voor je gedaan die ik graag ook wil laten zien.

Nu ben ik op zoek naar een manier om heel primitief pixels aan te sturen onder dos en linux. Is dit uberhaupt wel mogelijk of zal ik direct het vga geheugen moeten aanspreken of zal dit niet op de zelfde plek zitten onder linux en windows?

  • Rowwan
  • Registratie: November 2000
  • Laatst online: 19:33
Ik ben ik zelf ook eens tegenaan gelopen in C# .NET. Hier is de setPixel namelijk verwijderd omdat deze NIET platform afhankelijk is. Maw. een primitieve platformafhankelijke functie zul je waarschijnlijk niet vinden. Ik heb toen als "truc" de functie drawLine gebruikt met een lengte van 1.

[ Voor 3% gewijzigd door Rowwan op 20-12-2004 14:35 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-05 22:02

Creepy

Tactical Espionage Splatterer

Je zult echt een 3rd party lib. daarvoor moeten gebruiken als je het "platform onafhankelijk" wilt doen. Libs zoals SDL kunnen dit voor je regelen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:31

Janoz

Moderator Devschuur®

!litemod

Met glut kun je afaik op meerdere platformen windows managen. Dat is iig wat ik heb gebruikt voor de applicatie die ik voor mijn afstuderen gemaakt heb. Deze kon ik compileren voor linux en voor windows.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
Rowwan schreef op maandag 20 december 2004 @ 14:35:
Ik ben ik zelf ook eens tegenaan gelopen in C# .NET. Hier is de setPixel namelijk verwijderd omdat deze NIET platform afhankelijk is. Maw. een primitieve platformafhankelijke functie zul je waarschijnlijk niet vinden. Ik heb toen als "truc" de functie drawLine gebruikt met een lengte van 1.
maar voor drawLine heb je tooch ook aparte libs nodig?
Janoz schreef op maandag 20 december 2004 @ 14:41:
Met glut kun je afaik op meerdere platformen windows managen. Dat is iig wat ik heb gebruikt voor de applicatie die ik voor mijn afstuderen gemaakt heb. Deze kon ik compileren voor linux en voor windows.
Als ik even snel in google zoek naar glut komt ik altijd uit bij opengl, is dit vereist voor glut?


Ik zal even naar dat sdl kijken want dat ziet er best handig uit.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Kan je niet gewoon zelf een putPixel maken en daar 2 implementaties voor schrijven, 1 voor windows en een voor linux. Als je later andere platformen toe wilt voegen hoef je alleen een extra implementatie van je putPixel methode te maken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-05 22:02

Creepy

Tactical Espionage Splatterer

rwb schreef op maandag 20 december 2004 @ 15:04:
Kan je niet gewoon zelf een putPixel maken en daar 2 implementaties voor schrijven, 1 voor windows en een voor linux. Als je later andere platformen toe wilt voegen hoef je alleen een extra implementatie van je putPixel methode te maken.
Naast het putpixel verhaal zul je ook je scherm/window moeten initialiseren. Iets wat Glut en SDL al voor je doen :) (plus Glut en SDL worden op een hoop verschillende platformen ondersteunt ;) ).

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Creepy schreef op maandag 20 december 2004 @ 15:07:
[...]

Naast het putpixel verhaal zul je ook je scherm/window moeten initialiseren. Iets wat Glut en SDL al voor je doen :) (plus Glut en SDL worden op een hoop verschillende platformen ondersteunt ;) ).
Ja daar heb je gelijk in en daar zul je dus ook meerdere implementaties voor moeten schrijven. Het is idd het makkelijkst om hier gewoon een bestaande library voor te gebruiken, dat scheelt wel weer werk.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
ik denk dat ik maar naar sdl ga kijken aangezien glut opengl gebruikt.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15-05 06:45
Ik weet niet hoe OpenGL dat precies doet, maar in SDL kun je gewoon een venster aanmaken en een pointer naar een framebuffer krijgen. Dat is gewoon een array van 32-bit integers bijvoorbeeld, die XRGB packed pixels bevatten. Dat is dus een platformonafhankelijke manier om in de framebuffer te schrijven. (Vanuit performance oogpunt is dat veel beter dan een portable put-pixel implementatie; je kunt dan tenminste hele scanlines tegelijk tekenen, wat voor een beetje 3D-engine toch wel van kritiek belang is.)

  • devvy
  • Registratie: Augustus 2003
  • Laatst online: 11-05 21:33
Wat dacht je bijvoorbeeld van de GTK 1.x library? Draait zowel onder Linux/Unix als onder Windows. Voor de taak die je beschrijft lijkt me het een uitstekende library. Zie www.gtk.org.

https://photune.blogspot.com/


  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
Hat gaat mij er gewoon om dat ik een window kan definieren en daar vectoren in kan tekenen. Ik heb al een mini beta op mijn GR kunnen schrijven omdat die gewoon een draw line functie heeft waar je 2 coordinaten kan opgeven en hij tekend er een lijn tussen dus ik zoek eigenlijk naar de simpelste oplossing zodat ik gewoon blind weg onder linux kan coden en als ik het dan onder windows compile hij het meteen doet.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 18-05 23:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je moet er overigens even aan denken dat een generieke putpixel functie bijzonder onefficient is. Als je echt zelf met de hand wil pixelen dan heb je op z'n minst toegang nodig tot een (offscreen) framebuffer.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-05 22:02

Creepy

Tactical Espionage Splatterer

devvy schreef op maandag 20 december 2004 @ 15:27:
Wat dacht je bijvoorbeeld van de GTK 1.x library? Draait zowel onder Linux/Unix als onder Windows. Voor de taak die je beschrijft lijkt me het een uitstekende library. Zie www.gtk.org.
Moet GTK dan niet worden geinstalleerd op de machine waar je je prog. wil gaan draaien? Met SDL hoeft dit bijvoorbeeld niet, deze wordt meegelinkt in je uiteindelijke executable.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15-05 06:45
GTK is ook veel te highlevel; er zitten wel wat lijn- en puntfuncties in, maar het lijkt me niet echt de meest geschikte tool als je juist zelf alles wil kunnen doen. OpenGL en SDL lijken mij persoonlijk de meest geschikte opties.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 18-05 23:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

OpenGL is helemaal geen geschikte optie, het heeft dan wel de mogelijkheid een of meerdere pixels in de framebuffer te tekenen, maar snel is het allerminst.

.edit: even er vanuit gegaan dat een redelijke snelheid idd een vereiste is, als je puur pixels wilt kunnen tekenen dan kan OpenGL natuurlijk prima ;)

[ Voor 34% gewijzigd door .oisyn op 20-12-2004 16:29 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Niakmo
  • Registratie: Juni 2001
  • Laatst online: 10-02-2024
Het geen ik wil berijken kan op een grafischemachine al redelijk snel. Maar ik wil inderdaad niet te highlevel gaan. Na wat gelezen te hebben over SDL lijkt mij dat ook het beste. En de efficantie van putpixel is niet zo zeer van belang aangezien ik toevallig op dat putpixel kwam maar heel veel libs hebben ook een drawline functie zoals ik die van de GR heb gebruikt.
Pagina: 1