📄 opengllinux.pas
字号:
{**************************************
opengl interface unit for kylix
version 0.1
created by pinxue
2001.3.12
pinxue@263.net
http://pinxue.yeah.net
notes:
this unit is based on free pascal compiler's opengl package
and delphi-jedi's opengl 1.2 unit and mesa's .h
mesa special extensions have been removed.
I DON'T KNOW IS THERE ANY COPYRIGHT PROBLEM,
IF YOU KNOW, MAIL ME PLEASE, THANKS.
IF I HAVE THIS RIGHT, I MAKE THIS UNIT FOLLOW LGPL LICENSE.
**************************************}
unit OpenGLLinux;
interface
uses Xlib;
type
{$EXTERNALSYM HGLRC}
HGLRC = THandle;
type
GLenum = Cardinal;
{$EXTERNALSYM GLenum}
GLboolean = BYTEBOOL;
{$EXTERNALSYM GLboolean}
GLbitfield = Cardinal;
{$EXTERNALSYM GLbitfield}
GLbyte = Shortint; { signed char }
{$EXTERNALSYM GLbyte}
GLshort = SmallInt;
{$EXTERNALSYM GLshort}
GLint = Integer;
{$EXTERNALSYM GLint}
GLsizei = Integer;
{$EXTERNALSYM GLsizei}
GLubyte = Byte;
{$EXTERNALSYM GLubyte}
GLushort = Word;
{$EXTERNALSYM GLushort}
GLuint = Cardinal;
{$EXTERNALSYM GLuint}
GLfloat = Single;
{$EXTERNALSYM GLfloat}
GLclampf = Single;
{$EXTERNALSYM GLclampf}
GLdouble = Double;
{$EXTERNALSYM GLdouble}
GLclampd = Double;
{$EXTERNALSYM GLclampd}
PGLBoolean = ^GLBoolean;
PGLByte = ^GLByte;
PGLShort = ^GLShort;
PGLInt = ^GLInt;
PGLSizei = ^GLSizei;
PGLubyte = ^GLubyte;
PGLushort = ^GLushort;
PGLuint = ^GLuint;
PGLclampf = ^GLclampf;
PGLfloat = ^GLFloat;
PGLdouble = ^GLDouble;
PGLclampd = ^GLclampd;
TGLArrayf4 = array [0..3] of GLFloat;
TGLArrayf3 = array [0..2] of GLFloat;
TGLArrayi4 = array [0..3] of GLint;
{...}
{ OpenGL X glue const (glx.h) ========}
// Tokens for glXChooseVisual and glXGetConfig:
const
GLX_USE_GL = 1;
GLX_BUFFER_SIZE = 2;
GLX_LEVEL = 3;
GLX_RGBA = 4;
GLX_DOUBLEBUFFER = 5;
GLX_STEREO = 6;
GLX_AUX_BUFFERS = 7;
GLX_RED_SIZE = 8;
GLX_GREEN_SIZE = 9;
GLX_BLUE_SIZE = 10;
GLX_ALPHA_SIZE = 11;
GLX_DEPTH_SIZE = 12;
GLX_STENCIL_SIZE = 13;
GLX_ACCUM_RED_SIZE = 14;
GLX_ACCUM_GREEN_SIZE = 15;
GLX_ACCUM_BLUE_SIZE = 16;
GLX_ACCUM_ALPHA_SIZE = 17;
// GLX_EXT_visual_info extension
GLX_X_VISUAL_TYPE_EXT = $22;
GLX_TRANSPARENT_TYPE_EXT = $23;
GLX_TRANSPARENT_INDEX_VALUE_EXT = $24;
GLX_TRANSPARENT_RED_VALUE_EXT = $25;
GLX_TRANSPARENT_GREEN_VALUE_EXT = $26;
GLX_TRANSPARENT_BLUE_VALUE_EXT = $27;
GLX_TRANSPARENT_ALPHA_VALUE_EXT = $28;
// Error codes returned by glXGetConfig:
GLX_BAD_SCREEN = 1;
GLX_BAD_ATTRIBUTE = 2;
GLX_NO_EXTENSION = 3;
GLX_BAD_VISUAL = 4;
GLX_BAD_CONTEXT = 5;
GLX_BAD_VALUE = 6;
GLX_BAD_ENUM = 7;
// GLX 1.1 and later:
GLX_VENDOR = 1;
GLX_VERSION = 2;
GLX_EXTENSIONS = 3;
// GLX_visual_info extension
GLX_TRUE_COLOR_EXT = $8002;
GLX_DIRECT_COLOR_EXT = $8003;
GLX_PSEUDO_COLOR_EXT = $8004;
GLX_STATIC_COLOR_EXT = $8005;
GLX_GRAY_SCALE_EXT = $8006;
GLX_STATIC_GRAY_EXT = $8007;
GLX_NONE_EXT = $8000;
GLX_TRANSPARENT_RGB_EXT = $8008;
GLX_TRANSPARENT_INDEX_EXT = $8009;
{ OpenGL X glue type(glx.h) ========}
// Tokens for glXChooseVisual and glXGetConfig:
type
// From XLib:
XPixmap = XID;
XFont = XID;
XColormap = XID;
GLXContext = Pointer;
GLXPixmap = XID;
GLXDrawable = XID;
GLXContextID = XID;
function XSetStandardProperties(dpy:PDisplay;win:TWindow;window_name:pchar;icon_name:pchar;icon_pixmap:Pixmap;argv:PChar;arc:Integer;hits:LongInt):integer; //PXSizeHits);
{*************************************************************}
const
{ AttribMask }
GL_CURRENT_BIT = $00000001;
{$EXTERNALSYM GL_CURRENT_BIT}
GL_POINT_BIT = $00000002;
{$EXTERNALSYM GL_POINT_BIT}
GL_LINE_BIT = $00000004;
{$EXTERNALSYM GL_LINE_BIT}
GL_POLYGON_BIT = $00000008;
{$EXTERNALSYM GL_POLYGON_BIT}
GL_POLYGON_STIPPLE_BIT = $00000010;
{$EXTERNALSYM GL_POLYGON_STIPPLE_BIT}
GL_PIXEL_MODE_BIT = $00000020;
{$EXTERNALSYM GL_PIXEL_MODE_BIT}
GL_LIGHTING_BIT = $00000040;
{$EXTERNALSYM GL_LIGHTING_BIT}
GL_FOG_BIT = $00000080;
{$EXTERNALSYM GL_FOG_BIT}
GL_DEPTH_BUFFER_BIT = $00000100;
{$EXTERNALSYM GL_DEPTH_BUFFER_BIT}
GL_ACCUM_BUFFER_BIT = $00000200;
{$EXTERNALSYM GL_ACCUM_BUFFER_BIT}
GL_STENCIL_BUFFER_BIT = $00000400;
{$EXTERNALSYM GL_STENCIL_BUFFER_BIT}
GL_VIEWPORT_BIT = $00000800;
{$EXTERNALSYM GL_VIEWPORT_BIT}
GL_TRANSFORM_BIT = $00001000;
{$EXTERNALSYM GL_TRANSFORM_BIT}
GL_ENABLE_BIT = $00002000;
{$EXTERNALSYM GL_ENABLE_BIT}
GL_COLOR_BUFFER_BIT = $00004000;
{$EXTERNALSYM GL_COLOR_BUFFER_BIT}
GL_HINT_BIT = $00008000;
{$EXTERNALSYM GL_HINT_BIT}
GL_EVAL_BIT = $00010000;
{$EXTERNALSYM GL_EVAL_BIT}
GL_LIST_BIT = $00020000;
{$EXTERNALSYM GL_LIST_BIT}
GL_TEXTURE_BIT = $00040000;
{$EXTERNALSYM GL_TEXTURE_BIT}
GL_SCISSOR_BIT = $00080000;
{$EXTERNALSYM GL_SCISSOR_BIT}
GL_ALL_ATTRIB_BITS = $000fffff;
{$EXTERNALSYM GL_ALL_ATTRIB_BITS}
{ ClearBufferMask }
{ GL_COLOR_BUFFER_BIT }
{ GL_ACCUM_BUFFER_BIT }
{ GL_STENCIL_BUFFER_BIT }
{ GL_DEPTH_BUFFER_BIT }
{ Boolean }
GL_FALSE = 0;
{$EXTERNALSYM GL_FALSE}
GL_TRUE = 1;
{$EXTERNALSYM GL_TRUE}
{ BeginMode }
GL_POINTS = $0000 ;
{$EXTERNALSYM GL_POINTS}
GL_LINES = $0001 ;
{$EXTERNALSYM GL_LINES}
GL_LINE_LOOP = $0002 ;
{$EXTERNALSYM GL_LINE_LOOP}
GL_LINE_STRIP = $0003 ;
{$EXTERNALSYM GL_LINE_STRIP}
GL_TRIANGLES = $0004 ;
{$EXTERNALSYM GL_TRIANGLES}
GL_TRIANGLE_STRIP = $0005 ;
{$EXTERNALSYM GL_TRIANGLE_STRIP}
GL_TRIANGLE_FAN = $0006 ;
{$EXTERNALSYM GL_TRIANGLE_FAN}
GL_QUADS = $0007 ;
{$EXTERNALSYM GL_QUADS}
GL_QUAD_STRIP = $0008 ;
{$EXTERNALSYM GL_QUAD_STRIP}
GL_POLYGON = $0009 ;
{$EXTERNALSYM GL_POLYGON}
{ AccumOp }
GL_ACCUM = $0100;
{$EXTERNALSYM GL_ACCUM}
GL_LOAD = $0101;
{$EXTERNALSYM GL_LOAD}
GL_RETURN = $0102;
{$EXTERNALSYM GL_RETURN}
GL_MULT = $0103;
{$EXTERNALSYM GL_MULT}
GL_ADD = $0104;
{$EXTERNALSYM GL_ADD}
{ AlphaFunction }
GL_NEVER = $0200;
{$EXTERNALSYM GL_NEVER}
GL_LESS = $0201;
{$EXTERNALSYM GL_LESS}
GL_EQUAL = $0202;
{$EXTERNALSYM GL_EQUAL}
GL_LEQUAL = $0203;
{$EXTERNALSYM GL_LEQUAL}
GL_GREATER = $0204;
{$EXTERNALSYM GL_GREATER}
GL_NOTEQUAL = $0205;
{$EXTERNALSYM GL_NOTEQUAL}
GL_GEQUAL = $0206;
{$EXTERNALSYM GL_GEQUAL}
GL_ALWAYS = $0207;
{$EXTERNALSYM GL_ALWAYS}
{ BlendingFactorDest }
GL_ZERO = 0;
{$EXTERNALSYM GL_ZERO}
GL_ONE = 1;
{$EXTERNALSYM GL_ONE}
GL_SRC_COLOR = $0300;
{$EXTERNALSYM GL_SRC_COLOR}
GL_ONE_MINUS_SRC_COLOR = $0301;
{$EXTERNALSYM GL_ONE_MINUS_SRC_COLOR}
GL_SRC_ALPHA = $0302;
{$EXTERNALSYM GL_SRC_ALPHA}
GL_ONE_MINUS_SRC_ALPHA = $0303;
{$EXTERNALSYM GL_ONE_MINUS_SRC_ALPHA}
GL_DST_ALPHA = $0304;
{$EXTERNALSYM GL_DST_ALPHA}
GL_ONE_MINUS_DST_ALPHA = $0305;
{$EXTERNALSYM GL_ONE_MINUS_DST_ALPHA}
{ BlendingFactorSrc }
{ GL_ZERO }
{ GL_ONE }
GL_DST_COLOR = $0306;
{$EXTERNALSYM GL_DST_COLOR}
GL_ONE_MINUS_DST_COLOR = $0307;
{$EXTERNALSYM GL_ONE_MINUS_DST_COLOR}
GL_SRC_ALPHA_SATURATE = $0308;
{$EXTERNALSYM GL_SRC_ALPHA_SATURATE}
{ GL_SRC_ALPHA }
{ GL_ONE_MINUS_SRC_ALPHA }
{ GL_DST_ALPHA }
{ GL_ONE_MINUS_DST_ALPHA }
{ BlendingMode }
{ GL_LOGIC_OP }
{ ColorMaterialFace }
{ GL_FRONT }
{ GL_BACK }
{ GL_FRONT_AND_BACK }
{ ColorMaterialParameter }
{ GL_AMBIENT }
{ GL_DIFFUSE }
{ GL_SPECULAR }
{ GL_EMISSION }
{ GL_AMBIENT_AND_DIFFUSE }
{ CullFaceMode }
{ GL_FRONT }
{ GL_BACK }
{ GL_FRONT_AND_BACK }
{ DepthFunction }
{ GL_NEVER }
{ GL_LESS }
{ GL_EQUAL }
{ GL_LEQUAL }
{ GL_GREATER }
{ GL_NOTEQUAL }
{ GL_GEQUAL }
{ GL_ALWAYS }
{ DrawBufferMode }
GL_NONE = 0;
{$EXTERNALSYM GL_NONE}
GL_FRONT_LEFT = $0400;
{$EXTERNALSYM GL_FRONT_LEFT}
GL_FRONT_RIGHT = $0401;
{$EXTERNALSYM GL_FRONT_RIGHT}
GL_BACK_LEFT = $0402;
{$EXTERNALSYM GL_BACK_LEFT}
GL_BACK_RIGHT = $0403;
{$EXTERNALSYM GL_BACK_RIGHT}
GL_FRONT = $0404;
{$EXTERNALSYM GL_FRONT}
GL_BACK = $0405;
{$EXTERNALSYM GL_BACK}
GL_LEFT = $0406;
{$EXTERNALSYM GL_LEFT}
GL_RIGHT = $0407;
{$EXTERNALSYM GL_RIGHT}
GL_FRONT_AND_BACK = $0408;
{$EXTERNALSYM GL_FRONT_AND_BACK}
GL_AUX0 = $0409;
{$EXTERNALSYM GL_AUX0}
GL_AUX1 = $040A;
{$EXTERNALSYM GL_AUX1}
GL_AUX2 = $040B;
{$EXTERNALSYM GL_AUX2}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -