* Added glxtest, contributed by Bart Tierens

git-svn-id: trunk@1228 -
This commit is contained in:
sg 2005-09-29 19:49:30 +00:00
parent 3571e59542
commit e8be272fb4
4 changed files with 133 additions and 17 deletions

1
.gitattributes vendored
View File

@ -2812,6 +2812,7 @@ packages/extra/opengl/examples/Makefile svneol=native#text/plain
packages/extra/opengl/examples/Makefile.fpc svneol=native#text/plain
packages/extra/opengl/examples/bounce.pp svneol=native#text/plain
packages/extra/opengl/examples/glutdemo.pp svneol=native#text/plain
packages/extra/opengl/examples/glxtest.pp -text
packages/extra/opengl/examples/morph3d.pp svneol=native#text/plain
packages/extra/opengl/examples/radblur.pp svneol=native#text/plain
packages/extra/opengl/fpmake.inc svneol=native#text/plain

View File

@ -1,5 +1,5 @@
#
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/08/10]
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/09/28]
#
default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-wince
@ -231,7 +231,7 @@ UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
endif
PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),i386-go32v2)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
@ -243,13 +243,13 @@ ifeq ($(FULL_TARGET),i386-os2)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
endif
ifeq ($(FULL_TARGET),i386-freebsd)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),i386-beos)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
endif
ifeq ($(FULL_TARGET),i386-netbsd)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),i386-solaris)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
@ -261,7 +261,7 @@ ifeq ($(FULL_TARGET),i386-netware)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
endif
ifeq ($(FULL_TARGET),i386-openbsd)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),i386-wdosx)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
@ -279,13 +279,13 @@ ifeq ($(FULL_TARGET),i386-wince)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
endif
ifeq ($(FULL_TARGET),m68k-linux)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),m68k-amiga)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
@ -294,46 +294,46 @@ ifeq ($(FULL_TARGET),m68k-atari)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),m68k-palmos)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
endif
ifeq ($(FULL_TARGET),powerpc-linux)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),powerpc-macos)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
endif
ifeq ($(FULL_TARGET),sparc-linux)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),sparc-solaris)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
endif
ifeq ($(FULL_TARGET),x86_64-linux)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),x86_64-win64)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
endif
ifeq ($(FULL_TARGET),arm-linux)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur glxtest
endif
ifeq ($(FULL_TARGET),arm-wince)
override TARGET_PROGRAMS+=glutdemo morph3d bounce radblur

View File

@ -4,6 +4,11 @@
[target]
programs=glutdemo morph3d bounce radblur
programs_linux=glxtest
programs_freebsd=glxtest
programs_netbsd=glxtest
programs_openbsd=glxtest
programs_darwin=glxtest
[require]
packages=opengl

View File

@ -0,0 +1,110 @@
{
GLX demo for FreePascal
2005 Bart Tierens, BTierens@netscape.net
This program is in the public domain
Warning: This demo works only with FreePascal 2.1 and better, due to changes to the glx header
}
program glxTest;
{$MODE delphi}
uses glx,unix,x,xlib,xutil,gl,glu;
var
attr: Array[0..8] of integer = (GLX_RGBA,GLX_RED_SIZE,1,GLX_GREEN_SIZE,1,GLX_BLUE_SIZE,1,GLX_DOUBLEBUFFER,none);
visinfo: PXVisualInfo;
cm: TColormap;
winAttr: TXSetWindowAttributes;
glXCont: GLXContext;
dpy: PDisplay;
win: TWindow;
procedure redraw();
begin
glClear(GL_COLOR_BUFFER_BIT);
glTranslatef(-0.5,-0.5,-2);
glBegin(GL_QUADS);
glColor3f(1,0,0);
glVertex3f(0,0,0);
glColor3f(0,1,0);
glVertex3f(1,0,0);
glColor3f(0,0,1);
glVertex3f(1,1,0);
glColor3f(1,1,1);
glVertex3f(0,1,0);
glEnd();
glXSwapBuffers(dpy, win); //Swap the buffers
end;
procedure resize(width,height: integer);
begin
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45,width/height,0.1,200);
glMatrixMode(GL_MODELVIEW);
end;
procedure loop();
var
event: TXEvent;
begin
while true do
begin
XNextEvent(dpy,@event);
case event._type of
Expose: redraw();
ConfigureNotify: resize(event.xconfigure.width,event.xconfigure.height);
KeyPress: halt(1);
end;
end;
end;
var
errorBase,eventBase: integer;
window_title_property: TXTextProperty;
title: String;
begin
initGlx();
dpy := XOpenDisplay(nil);
if(dpy = nil) then
writeLn('Error: Could not connect to X server');
if not (glXQueryExtension(dpy,errorBase,eventBase)) then
writeLn('Error: GLX extension not supported');
visinfo := glXChooseVisual(dpy,DefaultScreen(dpy), Attr);
if(visinfo = nil) then
writeLn('Error: Could not find visual');
//Create a new colormap
cm := XCreateColormap(dpy,RootWindow(dpy,visinfo.screen),visinfo.visual,AllocNone);
winAttr.colormap := cm;
winAttr.border_pixel := 0;
winAttr.background_pixel := 0;
winAttr.event_mask := ExposureMask or ButtonPressMask or StructureNotifyMask or KeyPressMask;
//Create a window
win := XCreateWindow(dpy,RootWindow(dpy,visinfo.screen),0,0,640,480,0,visinfo.depth,InputOutput,visinfo.visual,CWBorderPixel or CWColormap or CWEventMask,@winAttr);
title := 'FreePascal GLX demo --------- Press any key to exit';
XStringListToTextProperty(@title,1,@window_title_property);
XSetWMName(dpy,win,@window_title_property);
//Create an OpenGL rendering context
glXCont := glXCreateContext(dpy,visinfo,none,true);
if(glXCont = nil) then
writeLn('Error: Could not create an OpenGL rendering context');
//Make it current
glXMakeCurrent(dpy,win,glXCont);
//Map the window on the display
XMapWindow(dpy,win);
loop();
end.