Beginners Guide to OpenGL: Maak uw eigen CAD-software (6 / 14 stap)

Stap 6: De bouw: opzetten van de viewport


In deze stap zal ik gaan door het proces van het opzetten van een viewport in OpenGL, en kleur toevoegen aan de achtergrond!

Ten eerste kunt een kijkje nemen op de Anti-aliasing.

SDL_GL_SetAttribute() wordt gebruikt om verschillende eigenschappen voor onze venster instellen. Het is om te worden gebruikt voor de schepping van een venster daarom niet te worden gebracht in de hoofdlus.

In dit geval, gebruikte ik het inschakelen van Anti-Aliasing door SDL_GL_MULTISAMPLEBUFFERS ingesteld op 1 (d.w.z. ON). En SDL_GL_MULTISAMPLESAMPLES de Anti-Aliasing niveau instellen die van 1 (MIN) tot en met 8 (MAX worden kan).

Nu heb ik twee nieuwe functies hier gedefinieerd

initGL (

Coördineren van X, Y coördineren

Breedte, hoogte

)

aan deze door de gebruiker gedefinieerde functie pas ik de locatie van de viewport in mijn aanvraag en de grootte van mijn viewport die ik wil maken.

Nu moeten we de projectie voor de viewport, definiëren zodat establishProjectionMatrix() ik de viewport grootte doorgegeven. Er zijn twee hoofdtypen van prognoses

1) orthografische: dit type projectie is gebruikt in waterbouwkundige toepassingen waar het object wordt weergegeven aangezien er zonder vervorming.

2) perspectief: Dat biedt een "real life" weergave van objecten, de manier waarop we zien dingen natuurlijk met onze ogen. Dit type projectie wordt meestal gebruikt in games en simulaties.

Zo inrichten van de projectie, de GL_PROJETION matrix of laden de projectie matrix. Zoals ik al eerder zei, zijn de eigenschappen van de scène in OpenGL gecontroleerd door middel van matrices. Perspectiefprojectie wijzigt de scène door vervormen de vorm van de objecten in de scene. Dus we voor het opslaan en toepassen van deze informatie op de scène, matrices gebruiken.

Nu kan alleen een matrix worden geladen om te wijzigen in OpenGL tegelijk. Dus wanneer we iets wijzigen in de scène wilt, we gebruik van een matrix moeten, elke keer als we willen een matrix gebruiken, moeten we laden met behulp van glMatrixMode()

nu initialiseren we net als een variabele op nul bij definitie

int var = 0;

We moeten doen hetzelfde met een matrix

glMatrixMode(GL_PROJETION); //Load de matrix in OpenGL

glLoadIdentity(); / / Initialiseren

We initialiseren van deze matrix met een identiteit matrix, dan beginnen te wijzigen.

gluPrespective(,,,);

1) gezichtsveld-duurt een hoek in graden, en gezichtsveld in de Y-as. Ik koos voor een natuurlijke weergave, 45 graden.

2) hoogte-/ breedteverhouding - hier u doorgeven in het resultaat van hoogte/breedte van de viewport.

3) in de buurt van het knippen vliegtuig - de minimale afstand vanaf de camera waarnaar de 3D-wereld wordt gemaakt. bijvoorbeeld, soms wanneer u uw karakter in 3de persoonsmening verplaatst, krijgt u ook dicht bij zijn lichaam en je de binnenkant van het teken, in de buurt van knipvlak in actie, een onzichtbare vlak voor de camera zien. Als geen veelhoeken/punten kruis dat vliegtuig, worden ze niet weergegeven in de 3D-scène.

4) ver knippen vliegtuig - de verste afstand van de camera die waarnaar de objecten in de 3D-scène geladen/getrokken worden zal. bijvoorbeeld in de open wereld, RPG van zoals Skyrim, aan de horizon ziet u de land/stad verdwijnen in een witte smog, thats het knipvlak veel. Het is nuttig om de CPU-belasting omdat objecten te ver weg van de camera als getrokken, niet eens zichtbaar op het scherm worden.

De eerste functie in establishProjectionMatrix() die is glViewport() is verantwoordelijk voor de creatie voor de werkelijke viewport in onze opgegeven regio.

Na de oprichting van de projectie matrix, laten we overgaan naar andere initialisatie stappen,

Voordat we verder gaan, laten we eens kijken twee functies:

glEnable() en glDisable(),

Stel je voor OpenGL om een grote machine. Deze machine heeft een heleboel schakelaars te veranderen de manier waarop OpenGL zich gedraagt en genereert uitvoer. Als u wilt spiegelen deze schakelopties, gebruiken wij glEnable en glDisable.

Alles verandert OpenGL gedrag, maar de volgende coderegels zijn belangrijk.

glClearColor(R, G, B, A)- Neemt in float waarden variërend van 0.0f tot 1.0f en wist de viewport de opgegeven kleur.

Als u meerdere viewports gedefinieerd in uw app en proberen te maken van een object naar een viewport, ziet u geen om het even wat op andere viewports in de app. Dit is omdat de eigenschappen van een viewport veroorzaken conflicten met andere viewports.

dus gebruiken we de glScissor() die in feite definieert een gebied voor de viewport (in dit geval gebied waar viewport zelf wordt gedefinieerd) waarnaar de viewport en de gevolgen ervan zijn beperkt tot.

Dit laat ons meerdere viewports maken met hun eigen effecten en eigenschappen.

Nu laten we een kijkje nemen op DrawScene()

Deze is geplaatst na initGL() omdat het onze code voor de weergave van de kubus zal ontvangen.

glClear() wist de render (viewports) zijn met de vooraf gedefinieerde kleur en in dit geval aangezien we gaan worden met behulp van 3D veelhoeken, ik heb ook de diepte-buffer.

Gerelateerde Artikelen

Maak uw eigen slijtage overal "barefoot" schoenen

Maak uw eigen slijtage overal "barefoot" schoenen

* Opmerking! De volgende afbeeldingen zijn gemaakt met behulp van Model magie om het model van het voltooide project. Sugru zou worden sterker, soepeler toepassen en ziet er veel mooier! Model magie doet niet zeer goed glad en daarom zijn er vele hob
Hoe maak je eigen plaatsvervanger Sugru

Hoe maak je eigen plaatsvervanger Sugru

ik noem het Oogoo, een goedkope silicone klei die is gemakkelijk gemaakt. Het kan worden gebruikt als een uitstekende vervanger voor Sugru. Kan het hand gegoten of gegoten in vormen. Of, het kan worden gebruikt als een siliconen gieten. Het kan worde
Maak je eigen Iron acetaat/Homemade vlek

Maak je eigen Iron acetaat/Homemade vlek

Een voordelige en eenvoudige manier om veel verschillende soorten hout kleurt.Stap 1: Een zeer kosten effectieve manier om uw eigen vlekDe meeste materialen die ik gebruikte, zijn huishoudelijke artikelen.Artikelen gekocht:1. staalwol = $1,002. azijn
Maak uw eigen (goedkope en makkelijke) Hand Planer

Maak uw eigen (goedkope en makkelijke) Hand Planer

Mij had geweest grondig de markt voor nieuwe vliegtuigen van de hand naar mijn atelier. Er zijn verschillende merken en modellen, maar ze zijn meestal dus dure gereedschappen, dus na een lange onderzoek op het internet, bedacht ik hoe te recyclen van
Maak uw eigen houten C-klem! | DIY houtbewerking Tools #2

Maak uw eigen houten C-klem! | DIY houtbewerking Tools #2

C-klemmen zijn zo duur! Zag je dat prijskaartje laatste keer dat u in de winkel was?Ik heb niet een heel groot budget voor projecten, zodat ik de meeste van mijn instrumenten maken. Thats waarom ik ben gaan om u te tonen hoe maak je een perfecte hout
Maak uw eigen bakpoeder (glutenvrij)!

Maak uw eigen bakpoeder (glutenvrij)!

Bakpoeder (发粉; 泡打粉) is een belangrijk ingrediënt in vele bakken recepten. Als je hebt uitgeput van bakpoeder, zijn er een paar eenvoudige substituten voor u.De eenvoudigste manier is: Maak uw eigen bakpoeder door gebruik te maken van 2 gemeenschappel
Maak je eigen echte zwaard!

Maak je eigen echte zwaard!

Ooit wilde fruit ninja? Nu u kunt! Maak uw eigen zwaard dat kan snijd door iets in haar pad.Dit was een leuk project en moet een paar vaardigheden in praktijk gebracht.Bekijk een video over hoe zijn gemaakt hierStap 1: Het hele punt... Pak een potloo
Maak uw eigen Tablet weven kaarten

Maak uw eigen Tablet weven kaarten

Maak uw eigen Tablet PC kaarten uit gewone speelkaarten weven!Tablet weven (ook wel kaart weven genoemd) is een oude soort weven die tabletten gebruikt voor het maken van lange smalle stroken stof die zeer sterk.  Vermoedelijk kunststof tabletten kun
Maak uw eigen klei-sculpting lus tools-herziene versie (bijgewerkte 7 Sept 09)

Maak uw eigen klei-sculpting lus tools-herziene versie (bijgewerkte 7 Sept 09)

beeldhouwen instrumenten zijn essentiële kit voor beeldhouwen in klei of olie gebaseerde kleien zoals plasteline (een hoogwaardige plasticine), wax of chavant.Meestal zijn er twee belangrijkste soorten beeldhouwen tools-de stok-achtige verscheidenhei
Maak uw eigen draaibank van andere volkeren vuilnis

Maak uw eigen draaibank van andere volkeren vuilnis

het doel van dit instructable is te maken van een hout-draaibank uit gerecycleerd en restanten van materialen en gebruik deze om enkele mooie dingen te maken.Waarom een draaibank? U kunt het gebruiken om mooie verjaardag en kerst pressies voor famili
Maak uw eigen pallet!

Maak uw eigen pallet!

Dus wil je dat crafty pallet-project die u zag op Pinterest, maar je gewoon niet hebben toegang tot alle paletten.Wat is een persoon om te doen?Maak je eigen!Volg deze eenvoudige stappen om uw eigen zelfgemaakte pallet, en u zult klaar zijn om uw eig
Maak uw eigen professionele record reinigen machine voor minder dan $80 en Bespaar tot $3000 en meer.

Maak uw eigen professionele record reinigen machine voor minder dan $80 en Bespaar tot $3000 en meer.

Excuus voor mijn Engels.Nadat ik terug naar het geluid van de goede oude vinyl vond dat ik had het probleem elke record liefhebber heeft. Hoe schoon de records correct!?Er zijn vele manieren rond op het Internet. Goedkopere manieren willen de Knosti
Hoe te: Maak uw eigen mosterd!

Hoe te: Maak uw eigen mosterd!

Mosterd thuis maken is niet zo moeilijk als je - in feite, met minder dan een half uur werkelijke hoeveelheid werk denkt, kunt u mosterd!Het slechtste deel is het wachten - u kan niet de mosterd eten meteen, en het is het beste te wachten een paar da
Maak uw eigen avontuur spel (HTML)

Maak uw eigen avontuur spel (HTML)

dit is een zeer zeer zeer fundamentele gebruik van HTML programmering een maken uw eigen om avonturenspel te maken. Ik ben niet super knowledgable in HTML. Als u dit zien en proberen en wilt rundvlees uw spel om het te maken meer visueel geweldig vin