?? mywindow.~dpr
字號:
library MyWindow;
uses
windows,
SysUtils,
jawt_delphi in '..\..\Pas\jawt_delphi.pas',
jawt_info in '..\..\Pas\jawt_info.pas',
jawt_md in '..\..\Pas\jawt_md.pas',
JNI in '..\..\Pas\JNI.pas';
{$R *.res}
var DC:integer;
procedure setupPixelFormat(DC:HDC);
const
pfd:TPIXELFORMATDESCRIPTOR = (
nSize:sizeof(TPIXELFORMATDESCRIPTOR); // size
nVersion:1; // version
dwFlags:PFD_SUPPORT_OPENGL or PFD_DRAW_TO_WINDOW or
PFD_DOUBLEBUFFER; // support double-buffering
iPixelType:PFD_TYPE_RGBA; // color type
cColorBits:24; // preferred color depth
cRedBits:0; cRedShift:0; // color bits (ignored)
cGreenBits:0; cGreenShift:0;
cBlueBits:0; cBlueShift:0;
cAlphaBits:0; cAlphaShift:0; // no alpha buffer
cAccumBits: 0;
cAccumRedBits: 0; // no accumulation buffer,
cAccumGreenBits: 0; // accum bits (ignored)
cAccumBlueBits: 0;
cAccumAlphaBits: 0;
cDepthBits:16; // depth buffer
cStencilBits:0; // no stencil buffer
cAuxBuffers:0; // no auxiliary buffers
iLayerType:PFD_MAIN_PLANE; // main layer
bReserved: 0;
dwLayerMask: 0;
dwVisibleMask: 0;
dwDamageMask: 0; // no layer, visible, damage masks
);
var pixelFormat:integer;
begin
pixelFormat := ChoosePixelFormat(DC, @pfd);
if (pixelFormat = 0) then
exit;
if (SetPixelFormat(DC, pixelFormat, @pfd) <> TRUE) then
exit;
end;
procedure initOpenGl(Handle:integer);
var
RC:HGLRC;
i:integer;
begin
DC:=GetDC(Handle); //Actually, you can use any windowed control here
SetupPixelFormat(DC);
RC:=wglCreateContext(DC); //makes OpenGL window out of DC
wglMakeCurrent(DC, RC); //makes OpenGL window active
end;
procedure Java_MyWindow_initializeOpenGL(Env: PJNIEnv; canvas: JObject); stdcall;
var
JAWT_Info:TJAWT_Info;
hwnd:integer;
aspectRatio:single;
begin
{ JAWT_Info:=TJAWT_Info.create(Env,canvas);
hwnd := JAWT_Info.getHWND();
initOpenGl(hwnd);
////////////////////////////////////////
glViewport(0, 0, 100, 50);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
aspectRatio := 100 /50;
glOrtho (-100.0 * aspectRatio, 100.0 * aspectRatio, -100.0, 100.0, 1.0, -1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClearColor( 0.0, 0.0, 0.0, 0.0 ); }
writeln('Java_MyWindow_initializeOpenGL');
end;
procedure draw(Handle:integer);
var
BrushPt: TPoint; // holds the current brush origin
BrushHndl, OldBrush: HBRUSH; // handles to brushes
FormDC: HDC; // the form's device context
BrushOffset:integer;
begin
FormDC := GetDC(Handle);
// FormDC:=Handle;
Inc(BrushOffset);
BrushHndl := CreateHatchBrush(HS_CROSS, 255);
SetBrushOrgEx(FormDC, BrushOffset, BrushOffset, nil);
OldBrush := SelectObject(FormDC, BrushHndl);
GetBrushOrgEx(FormDC, BrushPt);
if BrushPt.X>7 then
begin
BrushOffset := 0;
SetBrushOrgEx(FormDC, BrushOffset, BrushOffset, nil);
end;
Rectangle(FormDC, 10, 10, 110, 110);
SelectObject(FormDC, OldBrush);
DeleteObject(BrushHndl);
ReleaseDC(Handle, FormDC);
end;
procedure Java_MyWindow_paintOpenGL(Env: PJNIEnv; canvas: JObject); stdcall;
var
JAWT_Info:TJAWT_Info;
hwnd:integer;
begin
JAWT_Info:=TJAWT_Info.create(Env,canvas);
hwnd := JAWT_Info.getHWND();
if hwnd=0 then exit;
draw(hwnd);
//writeln('1'+inttostr(sizeof(test)));
writeln('2'+inttostr(sizeof(jawt_Win32DrawingSurfaceInfo)));
{ glClear( GL_COLOR_BUFFER_BIT );
glPushMatrix();
glBegin( GL_TRIANGLES );
glColor3f( 1.0, 0.0, 0.0 );
glVertex2f( 0.0, 1.0 );
glColor3f( 0.0, 1.0, 0.0 ); glVertex2f( 0.87, -0.5 );
glColor3f( 0.0, 0.0, 1.0 ); glVertex2f( -0.87, -0.5 );
glEnd();
glPopMatrix();
SwapBuffers( DC ); }
// writeln('Java_MyWindow_paintOpenGL');
end;
procedure Java_MyWindow_cleanupOpenGL(Env: PJNIEnv; canvas: JObject); stdcall;
begin
writeln('Java_MyWindow_cleanupOpenGL');
end;
exports
Java_MyWindow_initializeOpenGL,
Java_MyWindow_paintOpenGL,
Java_MyWindow_cleanupOpenGL;
begin
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -