Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 12, 2025 22:54

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 09, 2003 09:53 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Kurz und schmerzlos:

was bedeutet dieser c++ code in delphi:

Code:
  1.  
  2.     unsigned char* lightmap = new unsigned char[Width * Height * 4];
  3.  
  4.  &nbsp; &nbsp; &nbsp; &nbsp;for(int iX = 0; iX < (Width * 4); iX += 4)
  5.  &nbsp; &nbsp; &nbsp; &nbsp;{
  6.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(int iY = 0; iY < Height; iY += 1)
  7.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{
  8.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lightmap[iX + iY * Height * 4] = (char)lumelcolor[iX / 4][iY][0]; &nbsp; &nbsp; &nbsp; &nbsp; // Red
  9.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lightmap[iX + iY * Height * 4 + 1] = (char)lumelcolor[iX / 4][iY][1]; &nbsp; &nbsp; // Green
  10.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lightmap[iX + iY * Height * 4 + 2] = (char)lumelcolor[iX / 4][iY][2]; &nbsp; &nbsp; // Blue
  11.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lightmap[iX + iY * Height * 4 + 3] = 255; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Alpha
  12.  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}
  13.  &nbsp; &nbsp; &nbsp; &nbsp;}
  14.  
  15.  


danke,

matane,
Final


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 09, 2003 12:31 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Ein zweidimensionales Array, wobei jede Zelle 4 Bytes gross ist

In Delphi:
Code:
  1.  
  2. type
  3.  &nbsp;TColor = record
  4.  &nbsp; &nbsp;red : Byte;
  5.  &nbsp; &nbsp;green : Byte;
  6.  &nbsp; &nbsp;blue : Byte;
  7.  &nbsp; &nbsp;Alpha : Byte;
  8.  &nbsp;end;
  9.  
  10. type
  11.  &nbsp; TLightmap : array[0..0, 0..0] of TColor;
  12. var
  13.  &nbsp;Lightmap : TLightmap;
  14. begin
  15.  &nbsp;SetLength(Lightmap, Width, Height);
  16.  &nbsp;for iy := 0 to (Height - 1) do begin
  17.  &nbsp; &nbsp;for ix := 0 to (Width - 1) do begin
  18.  &nbsp; &nbsp; &nbsp; lightmap[iX][iY].Red = lumelcolor[iX / 4][iY][0]; &nbsp; &nbsp; &nbsp; &nbsp; // Red
  19.  &nbsp; &nbsp; &nbsp; lightmap[iX][iY].Green = lumelcolor[iX / 4][iY][1]; &nbsp; &nbsp; // Green
  20.  &nbsp; &nbsp; &nbsp; lightmap[iX][iY].Blue = lumelcolor[iX / 4][iY][2]; &nbsp; &nbsp; // Blue
  21.  &nbsp; &nbsp; &nbsp; lightmap[iX][iY].Aplha = 255; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Alpha
  22.  &nbsp; &nbsp;end;
  23.  &nbsp;end;
  24. end;
  25.  


So aus dem Stehgreif würde ich es machen. Konnte es aber nicht testen.

KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 09, 2003 14:06 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 29, 2002 10:37
Beiträge: 251
Wohnort: Ulm
halt, nicht ganz :)

das ist kein 2dimensionales array sondern n einfaches *g*

<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>
<span class='reserved'>var</span>
lightmap : <span class='reserved'>array</span>[<span class='integer'>0</span>..<span class='integer'>0</span>] <span class='reserved'>of</span> PChar;

<span class='reserved'>begin</span>
setlength(lightmap,(width*height*<span class='integer'>4</span>));

<span class='comment'>(* ab hier ganz normal von c nach pascal konvertieren.. *)</span>

<span class='reserved'>end</span>;
</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

_________________
http://www.rochus.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 09, 2003 14:46 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Das stimmt auch nicht ganz. :D

Wenn überhaupt, dann ist es ein eindimensionales Array, das als dreidimensiones Array missbraucht wird. Die 1. Dimension ist Widht, die 2. Height und die dritte sind die 4 Bytes. Das bilde ich mit meinem zweidimensionalen Array aber nach, wodurch es einfacher zu verstehen ist.

KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 09, 2003 14:53 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 29, 2002 10:37
Beiträge: 251
Wohnort: Ulm
da sieht man mal wieder, dass die c-ler von nix ne ahnung haben ;) *flame* *lol*




- nich so ganz ernst nehmen :) -

_________________
http://www.rochus.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 09, 2003 15:31 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Wieso nur ernst nehmen? Todernst natürlich!!!!!!

Aber das was der in C gemacht hat, wird fast so vom Delphi Compiler umgesetzt. Intern werden mehrdimensionale Arrays ähnlich gespeichert, da es sich so schneller adressieren läßt.

KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 09, 2003 16:33 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 29, 2002 10:37
Beiträge: 251
Wohnort: Ulm
jo vielleicht macht der compiler das irgendwie so, es trägt aber nicht besonders zum verständnis des codes bei bzw. lässt sich der code doch leichter schreiben, wenn man es so macht wie du.. man muss nicht alles gleich fast genauso wie der compiler machen, dazu hab ich den doch!

_________________
http://www.rochus.net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 09, 2003 23:07 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Danke danke,

kann nun endlich mein Radiosity Processor weiterschreiben ;)

matane,
Final


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]