Har du lagt till Font under uses i den unit där du anropar procedurerna? Koden ovan ser ut att vara från dpr-filen... Är det där du anropar procedurerna? Ligger i så fall font.pas i samma bibliotek som projektet?
Om du skriver Font in 'Font.pas' måste filen Font.pas ligga i samma bibliotek på disken som dpr-filen. Om den inte gör det kan du antingen ange hela sökvägen till filen under uses, t ex Font in 'C:\MittDelphiProjekt\Font.pas' eller ta bort sökvägen helt och hållet, dvs bara skriva Font under uses. I det senare fallet måste sökvägen till stället där filen ligger finnas med antingen i Library path i Environment options eller i Search path i Project options för att kompilatorn ska hitta den.
Vad får du för felmeddelande?
Om kompilatorn inte hittar filen Font.pas borde den säga File not found: 'Font.dcu'.
Om kompilatorn säger Undeclared identifier: 'MinProcedur' så tyder det på att du inte deklarerat proceduren under interface-delen i Font.pas.
Om du exempelvis vill anropa LoadFont från din dpr-fil måste du lägga upp procedur-deklarationen i interface delen. Det är bara den som "syns utifrån". Så här alltså:
unit Font;
interface
uses
Windows,
OpenGL,
glAux;
[RED]procedure LoadFont;[/RED]
var
Base: GLuint;
Texture: array[0..2] of GLuint;
implementation
procedure glGenTextures(n: GLsizei; var textures: GLuint); stdcall; external opengl32;
procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32;
procedure LoadFont;
var
TextureImage: PTAUX_RGBImageRec;
begin
TextureImage := auxDIBImageLoadA('Font.bmp');
if not Assigned(TextureImage) then
Halt(1);
glGenTextures(1, texture[0]);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage^.sizeX, TextureImage^.sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage^.data);
FreeMem(TextureImage^.data);
FreeMem(TextureImage);
end;
procedure BuildFont;
var
Loop: GLuint;
cx: double;
cy: double;
begin
Base := glGenLists(256);
glBindTexture(GL_TEXTURE_2D, Texture[0]);
for loop := 0 to 255 do begin
cx := (loop mod 16)/16.0;
cy := (loop / 16)/16.0;
glNewList(base+loop, GL_COMPILE);
glBegin(GL_QUADS);
glTexCoord2f(cx,1-cy-0.0625);
glVertex2i(0,0);
glTexCoord2f(cx+0.0625,1-cy-0.0625);
glVertex2i(16,0);
glTexCoord2f(cx+0.0625,1-cy);
glVertex2i(16,16);
glTexCoord2f(cx,1-cy);
glVertex2i(0,16);
glEnd();
glTranslated(10,0,0);
glEndList();
end;
end;
procedure KillFont;
begin
glDeleteLists(base,256);
end;
procedure glText(x, y: GLint; S: String);
var
i: Integer;
begin
glBindTexture(GL_TEXTURE_2D, Texture[0]);
glDisable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glPushMatrix;
glLoadIdentity();
glOrtho(0,640,0,480,-1,-1);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslated(x,y,0);
glListBase(base-32+128);
for i := 0 to Length(S)-1 do
glCallLists(Ord(S[i]), GL_BYTE, @S);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glEnable(GL_DEPTH_TEST);
end;
end.
255 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e