Moin,
Ich habe für
OpenGL zwei Textdateien die für einen Shader zuständig sind.
Diese lade ich im Moment so:
Delphi-Quellcode:
function LoadShaderScriptFromFile(ShaderFilename: string): bool;
var
hFile: cardinal;
Size: cardinal;
numBytesRead: cardinal;
begin
Result := False;
hFile := CreateFile(PCHAR(ShaderFilename), GENERIC_READ,
FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if hFile <> 0 then
begin
Size := GetFileSize(hFile, nil);
setlength(szShaderText, size + 1);
if ReadFile(hFile, szShaderText[0], Size, numBytesRead, nil) then
Result := (szShaderText <> nil) and (Size = numBytesRead);
end;
CloseHandle(hFile);
end;
Nun möchte ich diese Dateien vereinen und in Sectionen in einer Textdatei speichern
und dementsprechend auch laden.
Beispiel:
Code:
[Vertexshader]
varying vec3 N;
void main(void)
{
N = normalize(gl_Normal);
//...
}
[Fragmentshader]
uniform sampler2D TextureA;
void main(void){
vec2 TexCoord = vec2(gl_TexCoord[0]);
// ...
gl_FragColor = texture2D(Texture0, TexCoord);
}
Meine Idee war nun die Datei per
GetPrivateProfilString() "Zeilenweise" einzulesen aber
Das dauernde öffnen und schliessen der Datei und die Unmöglichkeit diese dann aus einer Resource
zu laden gefällt mir wenig.
Gibt es andere Möglichkeiten ? Zum Beispiel wie man mit
CreateFile() geöffnete Dateien
zeilenweise einlesen kann oder andere Ideen ?