@@ -40,15 +40,17 @@ end; | |||||
begin | begin | ||||
oglWindow := CreateOpenGLWindow('SimpleLoadFromFile', 800, 600, @WindowProc); | oglWindow := CreateOpenGLWindow('SimpleLoadFromFile', 800, 600, @WindowProc); | ||||
try | try | ||||
tex := TglBitmap2D.Create; // create texture object | |||||
data := TglBitmapData.Create; // create texture data object | |||||
tex := TglBitmap2D.Create; // create texture object | |||||
data := TglBitmapData.Create; // create texture data object | |||||
try | try | ||||
data.LoadFromFile( // load texture data from file | |||||
data.LoadFromFile( // load texture data from file | |||||
ExtractFilePath(ApplicationName) + | ExtractFilePath(ApplicationName) + | ||||
'../textures/BMP_24_RGB8.bmp'); | '../textures/BMP_24_RGB8.bmp'); | ||||
tex.UploadData(data); // upload data to video card | |||||
if not data.FormatDescriptor.HasOpenGLSupport then // check if format is supported by OpenGL | |||||
data.ConvertTo(data.FormatDescriptor.OpenGLFormat); // if not then convert | |||||
tex.UploadData(data); // upload data to video card | |||||
finally | finally | ||||
FreeAndNil(data); // after upload is done, the data object could be freed to save memory | |||||
FreeAndNil(data); // after upload is done, the data object could be freed to save memory | |||||
end; | end; | ||||
while running and ProgressMesages do begin | while running and ProgressMesages do begin | ||||
@@ -8,9 +8,8 @@ | |||||
<Unit0> | <Unit0> | ||||
<Filename Value="SimpleLoadFromFile.lpr"/> | <Filename Value="SimpleLoadFromFile.lpr"/> | ||||
<IsPartOfProject Value="True"/> | <IsPartOfProject Value="True"/> | ||||
<IsVisibleTab Value="True"/> | |||||
<TopLine Value="30"/> | <TopLine Value="30"/> | ||||
<CursorPos X="8" Y="45"/> | |||||
<CursorPos X="56" Y="46"/> | |||||
<UsageCount Value="20"/> | <UsageCount Value="20"/> | ||||
<Loaded Value="True"/> | <Loaded Value="True"/> | ||||
</Unit0> | </Unit0> | ||||
@@ -23,9 +22,10 @@ | |||||
<Filename Value="..\..\glBitmap.pas"/> | <Filename Value="..\..\glBitmap.pas"/> | ||||
<IsPartOfProject Value="True"/> | <IsPartOfProject Value="True"/> | ||||
<UnitName Value="glBitmap"/> | <UnitName Value="glBitmap"/> | ||||
<IsVisibleTab Value="True"/> | |||||
<EditorIndex Value="1"/> | <EditorIndex Value="1"/> | ||||
<TopLine Value="6544"/> | |||||
<CursorPos X="47" Y="6558"/> | |||||
<TopLine Value="3822"/> | |||||
<CursorPos X="65" Y="3838"/> | |||||
<UsageCount Value="20"/> | <UsageCount Value="20"/> | ||||
<Loaded Value="True"/> | <Loaded Value="True"/> | ||||
</Unit2> | </Unit2> | ||||
@@ -36,7 +36,6 @@ | |||||
</Unit3> | </Unit3> | ||||
<Unit4> | <Unit4> | ||||
<Filename Value="..\TextureFromFunction\TextureFromFunction.lpr"/> | <Filename Value="..\TextureFromFunction\TextureFromFunction.lpr"/> | ||||
<UnitName Value="SimpleLoadFromFile"/> | |||||
<EditorIndex Value="2"/> | <EditorIndex Value="2"/> | ||||
<TopLine Value="68"/> | <TopLine Value="68"/> | ||||
<CursorPos Y="78"/> | <CursorPos Y="78"/> | ||||
@@ -44,7 +43,7 @@ | |||||
<Loaded Value="True"/> | <Loaded Value="True"/> | ||||
</Unit4> | </Unit4> | ||||
</Units> | </Units> | ||||
<JumpHistory Count="21" HistoryIndex="20"> | |||||
<JumpHistory Count="24" HistoryIndex="23"> | |||||
<Position1> | <Position1> | ||||
<Filename Value="SimpleLoadFromFile.lpr"/> | <Filename Value="SimpleLoadFromFile.lpr"/> | ||||
<Caret Line="47" Column="75" TopLine="22"/> | <Caret Line="47" Column="75" TopLine="22"/> | ||||
@@ -129,6 +128,18 @@ | |||||
<Filename Value="SimpleLoadFromFile.lpr"/> | <Filename Value="SimpleLoadFromFile.lpr"/> | ||||
<Caret Line="45" Column="8" TopLine="30"/> | <Caret Line="45" Column="8" TopLine="30"/> | ||||
</Position21> | </Position21> | ||||
<Position22> | |||||
<Filename Value="..\..\glBitmap.pas"/> | |||||
<Caret Line="446" Column="50" TopLine="420"/> | |||||
</Position22> | |||||
<Position23> | |||||
<Filename Value="SimpleLoadFromFile.lpr"/> | |||||
<Caret Line="46" Column="56" TopLine="30"/> | |||||
</Position23> | |||||
<Position24> | |||||
<Filename Value="..\..\glBitmap.pas"/> | |||||
<Caret Line="446" Column="14" TopLine="431"/> | |||||
</Position24> | |||||
</JumpHistory> | </JumpHistory> | ||||
</ProjectSession> | </ProjectSession> | ||||
</CONFIG> | </CONFIG> |
@@ -390,6 +390,10 @@ type | |||||
{ @return @true if the format is a grayscale format, @false otherwise } | { @return @true if the format is a grayscale format, @false otherwise } | ||||
function GetIsGrayscale: Boolean; | function GetIsGrayscale: Boolean; | ||||
{ @return @true if the format is supported by OpenGL, @false otherwise } | |||||
function GetHasOpenGLSupport: Boolean; | |||||
protected | protected | ||||
fFormat: TglBitmapFormat; //< format this descriptor belongs to | fFormat: TglBitmapFormat; //< format this descriptor belongs to | ||||
fWithAlpha: TglBitmapFormat; //< suitable format with alpha channel | fWithAlpha: TglBitmapFormat; //< suitable format with alpha channel | ||||
@@ -442,6 +446,8 @@ type | |||||
property HasColor: Boolean read GetHasColor; //< @true if the format has any color color channel, @false otherwise | property HasColor: Boolean read GetHasColor; //< @true if the format has any color color channel, @false otherwise | ||||
property IsGrayscale: Boolean read GetIsGrayscale; //< @true if the format is a grayscale format, @false otherwise | property IsGrayscale: Boolean read GetIsGrayscale; //< @true if the format is a grayscale format, @false otherwise | ||||
property HasOpenGLSupport: Boolean read GetHasOpenGLSupport; //< @true if the format is supported by OpenGL, @false otherwise | |||||
function GetSize(const aSize: TglBitmapSize): Integer; overload; virtual; | function GetSize(const aSize: TglBitmapSize): Integer; overload; virtual; | ||||
function GetSize(const aWidth, aHeight: Integer): Integer; overload; virtual; | function GetSize(const aWidth, aHeight: Integer): Integer; overload; virtual; | ||||
@@ -3837,6 +3843,11 @@ begin | |||||
result := (Mask.r = Mask.g) and (Mask.g = Mask.b) and (Mask.r > 0); | result := (Mask.r = Mask.g) and (Mask.g = Mask.b) and (Mask.r > 0); | ||||
end; | end; | ||||
function TglBitmapFormatDescriptor.GetHasOpenGLSupport: Boolean; | |||||
begin | |||||
result := (OpenGLFormat = Format); | |||||
end; | |||||
procedure TglBitmapFormatDescriptor.SetValues; | procedure TglBitmapFormatDescriptor.SetValues; | ||||
begin | begin | ||||
fFormat := tfEmpty; | fFormat := tfEmpty; | ||||