124
Tags:
delphi
Skrevet af
Bruger #1474
@ 16.11.2003
Prøver vi at kompile, skulle vi gerne se en stor hvid trekant. Hvis der ikke er defineret nogen farve tegner OpenGL nemlig alt hvidt som default. Hvis du vil farve din trekant, kan du vælge at definere dine farver som floats eller som bytes. Det var kun ved glColorClear() at du kun kunne definere din farve som floats. Hvis du vil definere den som floats, kan du bruge glColor3f(), og med en alpha værdi bruger du glColor4f(). Vil du derimod definere din farve som Bytes, skal du bruge glColor3ub(), og med en alpha værdi glColor4ub(). Farven skal selvfølig defineres før din primitiv bliver tegnet. Koden vil derfor se således ud:
procedure TForm1.FormPaint(Sender: TObject);
begin
glClearColor(0,0,0,0);
glClear(gl_Color_Buffer_Bit);
//Farver hele vores trekant rød
glColor3ub(255,0,0):
glBegin(gl_Triangles);
glVertex3f(0 ,+0.5,0);
glVertex3f(+0.5,-0.5,0);
glVertex3f(-0.5,-0.5,0);
glEnd;
SwapBuffers(Context.DeviceContext);
end;
Kompiler vi nu, vil vi se at trekanten er blevet rød. Du har også mulighed for at farve hver enkelt vertex i din primitiv i stedet for hele din primitiv. For at gøre det skriver du blot dine farve værdier for hver vertex:
procedure TForm1.FormPaint(Sender: TObject);
begin
glClearColor(0,0,0,0);
glClear(gl_Color_Buffer_Bit);
glBegin(gl_Triangles);
//Tegner første vertex rød...
glColor3ub(255,0,0);
glVertex3f(0 ,+0.5,0);
//...anden vertex grøn...
glColor3ub(0,255,0);
glVertex3f(+0.5,-0.5,0);
//...og den tredje vertex blå
glColor3ub(0,0,255);
glVertex3f(-0.5,-0.5,0);
glEnd;
SwapBuffers(Context.DeviceContext);
end;
Kompiler vi igen, vil vi se at vores trekant nu både er rød, grøn og blå. Lad os i stedet prøve at lave en firkant. Til dette formål findes der faktisk en primitiv der hedder gl_Quads som er designet til at lave firkanter. Med gl_Quads behøver vi kun at angive 4 punkter for at få en firkant, hvor vi med gl_Triangles skal angive 6 punkter. Det vil derfor resultere i mindre kode og større overskuelighed at bruge gl_Quads:
procedure TForm1.FormPaint(Sender: TObject);
begin
glClearColor(0,0,0,0);
glClear(gl_Color_Buffer_Bit);
//Tegner en firkant med gl_Quads
glBegin(gl_Quads);
glColor3ub(255,0,0);
glVertex3f(-0.5, -0.5, 0);
glColor3ub(0,255,0);
glVertex3f(-0.5, +0.5, 0);
glColor3ub(0,0,255);
glVertex3f(+0.5, +0.5, 0);
glColor3ub(255,255,0);
glVertex3f(+0.5 ,-0.5, 0);
glEnd;
SwapBuffers(Context.DeviceContext);
end;
Som du sikkert har bemærket ser vores figur lidt udstrukket ud, trods det, at vi har sat vores koordinater med lige store forhold mellem hinanden. Det er fordi vi ikke har defineret nogen frustum, så OpenGL bruger derfor en standard frustum. Dette kan vi selvfølig ændre på. Funktionen glFrustum() vil gøre os i stand til selv at definere en frustum. Grunden til at vi overhovedet har et begreb som en Frustum, er, for at gøre vores kære grafikkort's liv lidt lettere. Det vi egenligt gør, er, at definere en kasse (frustum) foran vores viewport. Alt hvad der er inde i vores kasse, vil blive beregnet og dermed synligt, og alt der er udenfor vil OpenGL ignorere. Dette vil dermed resultere i, at dit grafikkort ikke behøver at arbejde med unødvendige store buffers. Da OpenGL som default har sat en frustum (kasse) der ligger så tæt på vores viewport (0 units væk) at vinklen mellem vores viewport og frustum er så stor, at det får vores perspektiv til at se næsten helt forvrænget ud. Man kan sammenligne det lidt med en kamera's linse. En vinkel på omkring 45 grader (er en frustum der er ca. 2 units væk fra viewporten) giver en fornuftig perspektiv. Men det er selvfølig en smags sag.
glFrustum(-1.0, +1.0, -(ClientHeight/ClientWidth), ClientHeight/ClientWidth, 2, 500);
Udover at jeg beregner den korrekte forhold mellem bredde og højde ved at dividere formens bredde og højde med hinanden, og bestemt at min frustum skal være 2 units væk fra min viewport, har jeg yderlig bestemt at den fjerneste side af min frustum skal være 100 units væk fra min viewport. Med andre ord, så har jeg en frustum (kasse) der er 498 units lang via Z aksen. Da vores frustum kun behøver at blive defineret når formens bredde eller højde bliver ændret vil det være meget oplagt at skrive det i formens OnResize property:
procedure TForm1.FormResize(Sender: TObject);
begin
//Laver vores egen frustum der er 2 units væk fra viewporten, og er 498 units lang!
glFrustum(-1.0, +1.0, -(ClientHeight/ClientWidth), ClientHeight/ClientWidth, 2, 500);
end;
Kompiler du vores tidligere kode med vores nye frustum i FormResize proceduren, vil du opleve, at formen er helt sort. Det skyldes at vores geometri ligger udenfor vores frustum, da vi lige har flyttet den 2 units væk fra vores viewport. Siden vi som default altid har vores viewport liggende pa netop koordinat: (0,0,0) og kigger ned langs Z aksen (mod minus værdierne), skal vi skubbe vores tidligere primitiv minus 2 units langs Z aksen, for at komme til at se vores firkant som før.
procedure TForm1.FormPaint(Sender: TObject);
begin
glClearColor(0,0,0,0);
glClear(gl_Color_Buffer_Bit);
//Flytter alle vores Z værdier -2 units, så vores firkant er inde i vores frustum igen - og der med synlig igen!
glBegin(gl_Quads);
glColor3ub(255,0,0);
glVertex3f(-0.5, -0.5, -2);
glColor3ub(0,255,0);
glVertex3f(-0.5, +0.5, -2);
glColor3ub(0,0,255);
glVertex3f(+0.5, +0.5, -2);
glColor3ub(255,255,0);
glVertex3f(+0.5 ,-0.5, -2);
glEnd;
SwapBuffers(Context.DeviceContext);
end;
Indtil nu har vi tegnet primitiver der let kunne forveksles med 2D grafik. Lad os derfor prøve at gøre vores kode lidt interaktiv. Med glTranslatef() og glRotatef() kan man flytte og rotere geometri. I følgende eksempel vil vi bruge pil-tasterne til at flytte og rotere rundt på vores firkant. Til det har vi brug for at definere en ny record, der er i stand til at indeholde X, Y og Z koordinater:
type
TVector = record
X, Y, Z : Single;
end;
Vi definere nu to nye globale varianter: Translation og Rotation som TVector, og skriver følgende i vores FormPaint procedure:
var
Translation, Rotation : TVector;
procedure TForm1.FormPaint(Sender: TObject);
begin
glClearColor(0,0,0,0);
glClear(gl_Color_Buffer_Bit);
//Vil flytte vores firkant. Som du kan se vil den altid blive skubbet minus 5 units væk fra viewporten så vi kan se den rotere rundt!
with Translation do
glTranslatef(X,Y,Z-5);
//Vil rotere vores firkant rundt om hver akse (X, Y, Z)
with Rotation do
begin
glRotatef(X,1,0,0);
glRotatef(Y,0,1,0);
glRotatef(Z,0,0,1);
end;
glBegin(gl_Quads);
glColor3ub(255,0,0);
glVertex3f(-0.5, -0.5, 0);
glColor3ub(0,255,0);
glVertex3f(-0.5, +0.5, 0);
glColor3ub(0,0,255);
glVertex3f(+0.5, +0.5, 0);
glColor3ub(255,255,0);
glVertex3f(+0.5 ,-0.5, 0);
glEnd;
SwapBuffers(Context.DeviceContext);
end;
Ud over det skriver vi følgende kode i vores OnKeyDown property:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
//Flytter vores firkant til venstre
VK_Left: Translation.X := Translation.X-0.01;
//Flytter vores firkant til højre
VK_Right: Translation.X := Translation.X+0.01;
//Rotere vores firkant rundt om X aksen
VK_Up: Rotation.X := Rotation.X+1;
VK_Down: Rotation.X := Rotation.X-1;
end; //Case
FormPaint(nil);
end;
Prøv at kompile. Når du taster pil- Venstre/Højre vil firkanten bevæge sig til venstre og højre af skærmen. Taster du pil- Op/Ned rotere firkanten rundt om sig selv via X aksen. Men som du sikkert hurtig vil opdage, at det er det svært at styre den, fordi OpenGL ikke husker på den oprindelige position og rotation. Dette kan heldigvis meget let løses ved hjælp af en standard matrix. Ligesom da vi definerede vores primitiv med glBegin() og glEnd kan vi definér en matrix med glPushMatrix og glPopMatrix. Disse kald skal selvfolig indsættes før vi begynder at flytte og rotere og lige efter vi har tegnet vores firkant:
var
Translation, Rotation : TVector;
procedure TForm1.FormPaint(Sender: TObject);
begin
glClearColor(0,0,0,0);
glClear(gl_Color_Buffer_Bit);
//Begynder på en standard Matrix. Med fag ord, så skubber vi en matrix ind i OpenGL matrix-stak!
glPushMatrix;
with Translation do
glTranslatef(X,Y,Z-5);
with Rotation do
begin
glRotatef(X,1,0,0);
glRotatef(Y,0,1,0);
glRotatef(Z,0,0,1);
end;
glBegin(gl_Quads);
glColor3ub(255,0,0);
glVertex3f(-0.5, -0.5, 0);
glColor3ub(0,255,0);
glVertex3f(-0.5, +0.5, 0);
glColor3ub(0,0,255);
glVertex3f(+0.5, +0.5, 0);
glColor3ub(255,255,0);
glVertex3f(+0.5 ,-0.5, 0);
glEnd;
//Afslutter vores matrix igen. Med fag ord, så popper vi den af OpenGL's matrix-stak igen!
glPopMatrix;
SwapBuffers(Context.DeviceContext);
end;
Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.
Del også gerne artiklen med dine Facebook venner:
Kommentarer (58)
WooooW... Her kan jeg ikke sig andet en flot arbejde... Det er fandme en Nice artikel... Du har ændret 2 ting i mit liv:
1. Du har lært mig om mulighederne med OpenGL
2. Du har givet mig MEGET lyst til at prøve Delphi
Fandme en flot artikel
Den har sQ nok taget langtid om at lave men jeg har fandme fået løst til at sætte mig til OpenGL istedet at programmere programmere browsere .mm
Mange tak skal I havde...
En rigtig, rigtig god artikel. Tak for det!
Håber virklig der kommer flere artikler fra dig af med OpenGL
God, enkel og detaljeret artikel :o)
Virkelig god artikel! Håber meget på at vi snart får nogle flere af den slags - spilprogrammering må vist være noget af det mest populære man kan skrive om
. Keep up the good work!
Endnu engang mange tak for rosen! Jeg vil lige nævne at hele kildekoden jeg brugte til denne artikel, kan downloades fra min site. Det kan måske være lettere at overskue de mange procedure i en Delphi unit.
Fed artikel!!
Men jeg har et problem... Hvis jeg sætter min forms WindowState til WsMaximized bliver gulvet, loftet og vægen usynelige.. hvorfor??
Jeg har undladt at nævne det i denne artikel, Da jeg syntes den allerede fyldte ret meget. Men jeg burde nok havde inkluderet den, siden flere har spurgt mig. Det er beskrevet som det første i den NYE artikel, (som jeg er halvvejs med). Så hvis du kan leve med det indtil da
Det er helt i orden
Så øver jeg mig bare lidt mere i OpenGL i mellem tiden...
Jeg synes virkelig denne artikel er meget god! Og den fortjener virkelig at få top karakter. Jeg glæder mig til at komme videre med mit spil
Håber der snart kommer en efterfølger af dig! Bliv ved med det!
Imponerende artikel!
Præcist, hvad skal man bruge til denne her tutorial??? jeg har Delphi, men hvad ellers???
jeg er lidt af en n00b
Det er det eneste! En Delphi kompiler er såmænd nok
Det er blandt andet derfor jeg foretrækker OpenGL!
Så mangler vi bare at der er en der omskriver artiklen til os der programere c++ i borland
Kanon artikel ellers
"Jeg vil lige nævne at hele kildekoden jeg brugte til denne artikel, kan downloades fra min site. " - Hvorhenne på din side? Jeg kan ikke lige finde den...
Men, fandme en nice artikel! Hvis alle skrev sådanne artikler, havde der overhovedet ikke været behov for rating system, da alle ville ligge til et 13-tal (5-tal, men altså
)
!
Så til Søren Klit Lambæk: Godt arbejde, og bliv endelig ved med det
Sidst i artiklen er en link til den! ellers er det:
http://www.opengl-delphi.dkDet glæder mig meget at I kan bruge min artikel! Det er ikke tit man ser artikler om 3D udvikling på dansk, men nu ved jeg, at det i hvert fald IKKE er fordi, at folk ikke værdsætter det
Gerne direkte link, kan ikke lige finde kildekoden
Kunne ikke forstå et eneste ord.
Det her er det jeg ikke forstår:'
1) for ikke at hvide hvor komomenterne ligger...
2) Den første kode er et elle andet sted hvor der står type. Hvor er det...
3) Nr. 2's sted skriver du navnet på de 2 kompomenter. Kan ikke skrive det før at kompomenterne er fundet.
Resten læste jeg ikke da det ikke ville hjælpe mig.
Kan i ikke lige hjælpe mig...
Tak
Theis>> Helt ærligt så ved jeg ikke hvad du mener! Hvis du er usikker med at programmere Delphi, så vil denne artikel være en stor mundfuld for dig, så det kan være at du skal vente til du ved lidt mere om Delphi.
Jeg har i ligevel prøvet at besvare så godt jeg kunne forstå:
1-2) En Type skal selvfølig altid defineres før selve typen blive anvendt i en kodesammensætning. Præcis hvor en type skal defineres er meget afhænig af dit formål med typen. I dette eksempel ville en global definering være meget indelysende!
3) Jeg ved ikke hvad det er for nogen 2 komponenter du mener!
NB: Prøv ar være mere præcis næste gang
)
Tja...
Søren Klit Lambæk
Vis du syns at jeg skal vænte efter jeg har læst en bog på 500 sider, en anden på 200 og en 3'ge på 140 sider, vil jeg sige nej.
Jeg ved udmærket meget om delphi.
Men jeg fårstår ikke rigtigt hvor de første 2 koder skal insættes...
Der er måske ikke 2 komomenter men jeg kunne bare ikke få det til at virke...
Kan i hjælpe???????
He he det var bestemt ikke for at fornærme dig, men siden du ikke er sikker på hvor det første kode skal skrives fik jeg den opfattelse at du ikke var helt inde i Delphi - hvilket jo ville havde været en ærlig sag
Du kan downloade kildekoden fra min site:
http://www.opengl-delphi.dk/source1.zipDer vil du hurtig kunne overskue hvordan jeg har sat det sammen.
Men det gør faktisk ligemeget hvor du implementere de 2 første kode eksempler, så længe de kan identificeres af din forms OnCreate property!
NB: Desuden vil jeg sige at en bog på 500 sider, en bog på 200 og en på 140 ikke er særligt meget! Jeg har 7 x 500 siders bøger liggende omkring Delphi, og føler stadig jeg mangler at vide meget endnu!
Søren Klit.
Im sorry. Det var ikke negativt ment. Det er sådan, at jeg bare godt tror at jeg ville kunne klare det. Jeg får også somme tider hjælp af en ekspert jeg kender...
Og jo 500 side, 200, 150 er ikke helt utrolig meget. Men jeg syns dog at det er nok til dette.
Jeg syns heller ikke selv at jeg ved nok om delphi. Men dog en masse...
Jeg kigger lidt på hjemmesiden...
Kanon artikel! Det må jeg sige... Klart et 5 tal herfra! Synes der er 1 ting som er dårligt! Det er at du kun har fået 2000 UP for den! Come on Admin's, den er da mindst 10.000 værd!
Kepp Up The Good Work!!!!!
Hej Søren Klit Lambæk.
Nu prøver jeg igen efter at have kigget på noget andet.
Dog har jeg et spr. efter dine første 30 linier.
Det lyder jo let. Og jeg kan fortå at jeg bare skal skrive det der (mener det er
OpegGL i user listen.
Men da jeg læste den ble jeg usikker om der er noget kompoment der skal fides frem fra kompomentpalleten? Er der det. Der står ingen adresse så det skal i såfald ikke hentes...
Nå Men Tak
type
TContext = record
RenderContext, DeviceContext : THandle;
end;
--------
Skal denne ikke ned i vores kode der oppe vor der allerede står
type
TForm1 = class(TForm)?
Vis ja, skal jeg slætte TForm1 = class(TForm). For så vil jo den ikke starte. Det er klart?
Bleger det ikke altid at være en liste over vilke kompoments der er brugt der står der oppe?
Hvis ja, hvor ligger så de kompomenter?
Engang for ALLE! Nej, der er ikke brug for komponenter eller at installere nogen komponenter, eller hentes findes nogen frem fra komponentpanelleten, for at bruge OpenGL i mine artikler! Så er det vist sat på plads! Alt du skal gøre for at kunne benytte OpenGL kald er at tilføje "OpenGL" under uses, som jeg har nævnt op til flere gange!
Når man skriver noget under uses, linker man en unit (.pas eller .dcu) til sit projekt! Dette er ikke nogen komponent, det er bare en anden unit med noget kode!
Du må selv om hvor du definere dine typer og varianter, så længe de kan identifiseres af de forskellige procedure og funktioner der har brug for dem!
Du skal ikke på nogen måder slette din forms klasse! Hvis du gør det vil du jo ikke havde nogen form, og dermed ikke kunne se grafikken! Du skal forøvrigt slet ikke slette noget af det kode som din Delphi kompiler for-skriver for dig!
Hvilken Delphi kompiler bruger du? Jeg har hørt at der skulle være problemer med de helt nye kompiler fra Borland, da de bruger et helt nyt filsystem! Men hvis du har en kompiler fra version 7 og ned efter, skulle der ikke være nogen problemer overhovedet!
Med venlig hilsen
Søren Klit Lambæk
Tillykke.
Jeg bruger Delphi 7 Enterprice (eller hvad det hedder).
Du behøver ikke at hisse dig op. Husk på at jeg spør da jeg er en noob. Og jeg må indrømme at jeg burde kunne havde lidt mere viden om hvad du taler om, får at jeg kan arbejde med det.
Men en 13 årigs drøm er da 100% at kunne lave fede 3d spil. Så jeg kan ikke vændte.
Men vis du syns det er irrigterende at jeg spør. Så må du lade vær at svare. Som dog ikke er pænt og jeg vil heller ikke blive glad.
Men så har jeg da heller ikke spurt så meget.
Men er det så umuligt at få lavet OpenGL med mit delphi version igennem din artikel.
Så må du da lave en for de folk som ejer den nyeste version.
Ellers må jeg da købe en af de gamle.
MEN SÅ ER JEG SUR VIS DET IKKE VIRKER!!!
Den er i såfald ikke glad for den første kode...
Tag det roligt.
Hilsen Theis F. Hinz (Shafh)
Jeg har bestemt ikke hidset mig op (Så skulle du høre når jeg hidser mig rigtigt op he he...)
Jeg er ikke træt af at folk spørger og slet ikke noob, men det kan måske være lidt trættende at få samme spørgsmål igen og igen... når jeg ikke kan gøre det mere klart end - INGEN KOMPONENTER!
Nå, men nok om det!
Selvom man er 13 år skal man selvfølgelig også havde en chance for at lave sine egne 3D Spil. Denne artikel henvender sig derfor til alle uanset alder, køn og race!
Du bruger Delphi 7, og den skulle altså hvad jeg har fået fortalt virke til mine artikler. Men du kan selv tjekke det ved at se hvad efternavne dine projekt filer hedder. Hvis de enten hedder DCR, PAS eller DCU skulle der være rimlig garanti for at det virker. Men hvis du siger at mit kode ikke virker så gør den det jo selvfølgelig ikke! Jeg har aldrig haft version 7 selv (bruger den gamle version 4 standard), så jeg kan med gode grunde ikke vide det med sikkerhed!
Prøv at oprette et nyt projekt og skriv "OpenGL" under uses, uden at skrive andet. Hvis det viser sig at din kompiler allerede brokker sig der er der noget galt!
Hvis den skriver: "OpenGL.Pas unidentified" eller lign. er det fordi filen OpenGL.pas ikke ligger, hvor den skal eller slet ikke findes!
OpenGL.Pas filen er en interface til OpenGL32.DLL filen som Windows bruger til at få kontakt til dit grafikkort med. OpenGL.pas filen skulle følge med din kompiler som standard! Ellers prøv at lade Windows foretage en fil-søgning efter denne fil!
Hvis det viser sig at du ikke kan finde denne fil kan du helt sikkert downloade den fra nettet. Der findes en anden fil kaldet OpenGL12.Pas det er ikke den! Det er en nyere version, og bliver ikke brugt i mine artikler, men den kan dog fint bruges, hvis man har lidt forstand på OpenGL!
Hvis intet af dette virker, så spørg igen. Og vi vil finde ud af en anden løsning! For 3D udvikling er noget af det sjoveste der findes, og det må du ikke gå glip af, hvis du hat lyst til det!
Held og Lykke
Med venlig hilsen
Søren Klit Lambæk
Tak.
det var et dejligt svar.
Men det virker med OpenGL i user listen.
Men koderne du skriver på artiklen virker ikke...
Men mine filer er også: .dmf, .dpr og .Pas.
Jeg prøver mig at andskaffe en gratis udgave af delphi 4, 5 eller 6.
Du behøver ikke at svare.
Du har været til fantastisk hjælp, og jeg kan ikke vendte til at prøve!!!
Svare måske om en et godt stykke tid, og siger om det virker.
Du behøver ikke at skifte kompiler! Det skulle virke, jeg har fundet ud af at jeg kender en som bruger Delphi 7, og han kan sagtens kompile min artikel!
Prøv at downloade kildekoden fra artiklen!
kopiere indholdet fra .pas filen men KUN det jeg skriver i artiklen, og ikke noget af det der er pre-skrevet af Delphi! og tilføj derefter OpenGL under uses!
Så skulle det virke! Kom tilbage, hvis det ikke virker, og fortæl mig præcis det din Delphi kompiler skriver af fejlbesked!
Jeg tror grunden er at Delphi 7 bruger nogle units filer som Delphi 4 ikke behøver! Så hvis du kopiere hele min .pas fil og vil kompile det i Delphi 7, mangler den nogle af de units!
Theis tror du ikke du skulle passe lidt på med at sige at dine artiklens koder ikke virker!...
Somregl er det jo en selv som har tastet forkert...
Jeg ved godt du har læst 999999999 sider om delphi... det er også godt... men kan du bruge alt det du har lært? eller har du bare læst det?...
Jeg har arbejdet med delphi i ca. 1, 2 uger nu... sådan for sjovt.... og jeg kan sagtens få denne artikel til at virke...
jeg bruger også Delphi 7 EnterPrise...
Så der skulle ikke være noget der!
Men tænk lige en ekstre gang når du siger at en kode ikke virker!
måske er det dig som har lavet fejlen!
Til Søren.....
Damn en god artikel! kan det gøres bedre?
Jo, tak.
Men nu har jeg også fået delphi 6. Men det virker ikke.
Jeg vil meget gerne sende dig et screenshot af det. Men alt det du skriver har jeg gjordt...
Kasper Svendsen>> Mange tak
Theis>> Send mig lige din kildekode! Der må absolut være noget du helt har misforstået med denne artikel eller Delphi generalt!
Kan jeg skrive det i en mail, ellers vil det fylde total meget. Og det vil både fylde på din artikel, og gør det måske lidt ufedt. Og også da det ikke interresere andre. Kan du ikke give en mail?
Heyyyy.
Jeg har fundet ud af det sådan set.
Fedt.
Og Søren jeg må undskylde alt den tid jeg har brugt....
Har kommet langt i denne artikel (helt hen og fået lavet en firkant.¨
Men mystisk nok at efter jeg har fået lavet det første med en firkant (den der er lidt lang), og jeg bliver ved med at bruge artiklen, vil den i de næste koder i artikelen kun komme den sorte baggrund på formen nå jeg afprøver det.
Why?
Men tak...
Nu er jeg kommet længere igen.
Jeg undskylder...
Men er der en der kan forklare hvordan idle kan laves i delphi 6 og 7?
har fundet ud af det igen...
Hej Drenge og Piger,
Sidder lige en sen Lørdag nat, og prøver denne fantastiske tutorial... men der kommer et problem jeg aldrig har set før.... Jeg er nogenlunde kendt i delphi, men har lige set det her før, er nået til første compile, og så kommer fejlen: EResNotFound???
Hvad er det og hvor kommer det fra, er det en fejl i installationen af Delphi? Eller er det mig
God weekend!
HA HA typist.... havde kommet til at slette linien: {$R *.dfm}
Undskyld drenge og piger..!!!
Hav en god aften...
I lige maade... Det var da godt at du fandt ud af problemet selv!
Hejsa igen drenge og piger, hvis I bare ønsker at BitMappet skal være i det samme bibliotek som dit program (EXE fil) så skal I skrive følgende ved LoadTexture delen:
Bitmap.LoadTexture('./Gulv.Bmp');
rigtig god artikel. men jeg har et lille problem,
min væg og mit loft er helt hvidt.
Kan du hjælpe?
Hejsa Tobias... Det kan vi jo ikke ha' ;-) Send lige dit kode til min mail, og jeg vil straks se på sagen!
Søren
jeg tror jeg har løst det selv.
Hej Søren,
Virkelig god artikel, men når man nu først kigger på artiklen nu her, og egentlig gerne ville se HELE koden, som du tidligere har haft liggende på dit website, er dette jo ikke muligt. Har du mulighed for at lægge koden op på nettet igen?
Med venlig hilsen
Daniel Juhl Mogensen
Jeg har skiftet hjemmeside da jeg ikke laengere bruger Delphi som mit hovedsprog! Jeg vil proeve at finde koden frem igen og evt. uploade den til mit nye site! Jeg skriver igen naar dette er sket!
Ikke for at skynde på dig, Søren, men det burde ikke tage over et år at finde en kode frem
Thomas>> ehhh, ikke helt sikker paa hvad du mener??? Har jeg lovet noget jeg ikke har holdt?
Naa, oki nu tror jeg at jeg er med igen! He he... du mener hele kilde koden for denne artikel? Ja, det har jeg altsaa fuldstaendigt glemt drenge! Er faktisk ikke sikker paa at jeg har den laengere!
Pyt med det
Hvad er dit nye hovedsprog?
Mit hovedsprog er C/C++. Jeg bruger stadig Delphi men dog i begrænset omfang. Egenligt kan jeg godt lide begge sprog på hver deres måde. Når det kommer til stykket er de stort set meget ens! Jeg er derfor ved at udvikle en spil motor der understøtter begge sprog. Det kan være jeg en dag skriver et par artikler/tutorials om hvordan man bruger den med de forskellige programmerings sprog. Hvis du er interesseret så kig en smut forbi
http://www.pixie3d.com
Rigtig godt skrevet!!
Kunne ikke gøres bedre
Dit Pixie3D projekt ser rigtigt interessant ud, og jeg tror at jeg vil tjekke det ud
Du skal være
logget ind for at skrive en kommentar.