|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
s1 Guest
|
Posted: Sun Jan 23, 2005 6:05 pm Post subject: |
|
Es apskatījos, kādas vērtības ir buferī:
buffer[0] 1
buffer[1] 4271622844
buffer[2] 4271722508
buffer[3] 414
buffer[4] 1
buffer[5] 4266740543
buffer[6] 4266745871
buffer[7] 417
buffer[7] 1
pēc algoritma tiek paņemts trīstūris 417, jo tā dziļums
buf[5] < buf[1], taču šajā gadījumā tuvāk ekrānam bija 414.
Varbūt nav pareizi sagatavots openGL?
Code: | begin
h_DC := GetDC(sender.Handle);
if(SetupPixelFormat(h_DC) = false) then sender.Close;
h_RC := wglCreateContext(h_DC);
wglMakeCurrent(h_DC, h_RC);
glEnable (GL_DEPTH_TEST);
glDepthFunc (GL_LESS);
glEnable(GL_TEXTURE_2D);
glClearColor(0.0, 0.0, 0.0, 0.0);
glViewport( 0, 0, SCRwidth, SCRheight );
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, SCRwidth / SCRheight ,0.1,100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
end; |
|
|
Back to top |
|
|
s1 Guest
|
Posted: Sun Jan 23, 2005 6:30 pm Post subject: |
|
Es kautko vēl pamanīju. Ja selection procedūrā noņem glPushMatrix un glPopMatrix, tad vispār nekas nestrādā. es skatos, tavā kodā to nav
Code: | glGetIntegerv(GL_VIEWPORT,@viewport);
glSelectBuffer(512,@buffer);
glRenderMode(GL_SELECT);
glInitNames;
glPushName(0);
glMatrixMode(GL_PROJECTION);
glPushMatrix; <------ ?????????????????
glLoadIdentity;
gluPickMatrix(mouseX,viewport[3] - mouseY,1.0,1.0,@viewport);
gluPerspective(45.0,(viewport[2] - viewport[0]) / (viewport[3] - viewport[1]),0.1,100.0);
glMatrixMode(GL_MODELVIEW);
//----------------------------------------------------------------------
glLoadIdentity;
glPushMatrix;
glRotate(dir,0,1,0);
glTranslate(-worldX,worldY-1.5,worldZ-25);
for i := 0 to faceCount-1 do
begin
glLoadName(i);
glBegin(GL_TRIANGLES);
drawTriangle(i);
glEnd;
end;
glPopMatrix;
//-----------------------------------------------------------------------
glMatrixMode(GL_PROJECTION);
glPopMatrix; <--------------------------?????????????????????
glMatrixMode(GL_MODELVIEW);
hits := glRenderMode(GL_RENDER);
if(hits > 0)then
begin
|
|
|
Back to top |
|
|
GiGa Indago Uzvarētājs
Joined: 25 Sep 2003 Posts: 887
|
Posted: Sun Jan 23, 2005 6:38 pm Post subject: |
|
Nu pameegini taa - lai nejauktu galvu, iznjem aaraa visus glpush un glpopmatrix; katru kadru uzzseto projekciju matricu ar gluprojection un modelview ar rotate/translate no jauna. Shito selection kodu laid uzreiz peec sceenas rendera nemainot nekaadas matricas. Un tajaa, pilniigi neko nedari ar modelview matricu, bet projekcijas matricai izdari tikai: loadidentity; gluPickMatrix; gluPerspective; - galvenais perspective dod tos pashus argumentus, ko Tu dod, kad renderee sceenu normaali. _________________
|
|
Back to top |
|
|
s1 Guest
|
Posted: Mon Jan 24, 2005 3:14 pm Post subject: |
|
Izdarīju visu, kā tu teici, tomēr joprojām nestrādā. Šeit ir viss kods, varbūt tu atrod kādu kļudu...
[/code]unit main;
interface
uses
Windows,
SysUtils,
Classes,
Forms,
OpenGL,
ExtCtrls,
Messages,
DXInput,
Controls,
DXDraws,
Graphics,
math,
StdCtrls, Dialogs;
type
TForm1 = class(TForm)
Timer1: TTimer;
DXInput1: TDXInput;
DXDraw1: TDXDraw;
OpenDialog1: TOpenDialog;
OpenDialog2: TOpenDialog;
DXImageList1: TDXImageList;
procedure Draw;
procedure Selection;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormResize(Sender: TObject);
private
public
end;
const F = 1;
SCRwidth = 800;
SCRheight = 600;
var
h_RC : HGLRC;
h_DC : HDC;
h_wnd: HWND;
Form1 : TForm1;
mouseX : integer;
mouseY : integer;
worldX : double;
worldY : double;
worldZ : double;
dir : double;
counting : boolean;
//------------------------------------
buffer : array [0..511] of GLuint;
hits : GLint;
viewport : array [0..3] of GLint;
depth : integer;
i : longWord;
j : longWord;
SelTriangle : word;
//------------------------
data : array[0..100]of single;
implementation
procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32;
{$R *.DFM}
//============================= S E T U P P I X E L ===================================
function SetupPixelFormat(DC:HDC):boolean;
var
pfd : PIXELFORMATDESCRIPTOR;
ppfd : PPIXELFORMATDESCRIPTOR;
pixelformat : integer;
begin
ppfd := @pfd;
ppfd.nSize := sizeof(PIXELFORMATDESCRIPTOR);
ppfd.nVersion := 1;
ppfd.dwFlags := PFD_DRAW_TO_WINDOW xor PFD_SUPPORT_OPENGL xor PFD_DOUBLEBUFFER;
ppfd.dwLayerMask := PFD_MAIN_PLANE;
ppfd.iPixelType := PFD_TYPE_RGBA;
ppfd.cColorBits := 16;
ppfd.cDepthBits := 16;
ppfd.cAccumBits := 0;
ppfd.cStencilBits := 0;
pixelformat := ChoosePixelFormat(dc, ppfd);
if pixelformat=0 then
begin
MessageBox(0, 'nepareizs pikseļa formāts ', 'Error', MB_OK);
SetupPixelFormat:=FALSE;
exit;
end;
if SetPixelFormat(dc, pixelformat, ppfd)=false then
begin
MessageBox(0, 'nepareizs pikseļa formāts', 'Error', MB_OK);
SetupPixelFormat:=FALSE;
exit;
end;
SetupPixelFormat:=TRUE;
end;
//=========================== I N I T O P E N G L ====================================
procedure initOPenGL;
begin
h_DC := GetDC(form1.Handle);
if(SetupPixelFormat(h_DC) = false) then form1.Close;
h_RC := wglCreateContext(h_DC);
wglMakeCurrent(h_DC, h_RC);
glClearDepth(1);
glEnable (GL_DEPTH_TEST);
glDepthFunc (GL_LESS);
glEnable(GL_TEXTURE_2D);
//glEnable(GL_POLYGON_SMOOTH);
//glEnable(GL_COLOR_MATERIAL);
//glShadeModel(GL_SMOOTH);
//glEnable(GL_LIGHTING);
//glEnable(GL_LIGHT0);
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glViewport( 0, 0, SCRwidth, SCRheight );
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, SCRwidth / SCRheight ,0.1,1000.0);
end;
{===================================== FormCreate ========================================}
procedure TForm1.FormCreate(Sender: TObject);
begin
{//------ 1024 x 768
form1.width := 1032;
form1.Height := 802;
form1.ClientWidth := 1024;
form1.ClientHeight := 768;
}
//------ 800 x 600
form1.width := 808;
form1.Height := 634;
form1.ClientWidth := 800;
form1.ClientHeight := 600;
viewport[0] := 0;
viewport[1] := 0;
viewport[2] := form1.ClientWidth;
viewport[3] := form1.ClientHeight;
initOpenGL;
// pogu sagatavošana -------------------------------------
form1.DXInput1.Keyboard.KeyAssigns[isButton3,0]:= VK_NUMPAD0;
form1.DXInput1.Keyboard.KeyAssigns[isButton4,0]:= VK_NUMPAD1;
//data-----------------------------------------
data[0] := -1;
data[1] := -1;
data[2] := 1;
data[3] := 1;
data[4] := -1;
data[5] := 1;
data[6] := 1;
data[7] := 1;
data[8] := 1;
data[9] := 1;
data[10] := 1;
data[11] := 1;
data[12] := -1;
data[13] := 1;
data[14] := 1;
data[15] := -1;
data[16] := -1;
data[17] := 1;
data[18] := -1;
data[19] := -1;
data[20] := -1;
data[21] := -1;
data[22] := -1;
data[23] := 1;
data[24] := -1;
data[25] := 1;
data[26] := 1;
data[27] := -1;
data[28] := 1;
data[29] := 1;
data[30] := -1;
data[31] := 1;
data[32] := -1;
data[33] := -1;
data[34] := -1;
data[35] := -1;
end;
//============================== S E L E C T I O N ===============================
procedure TForm1.Selection;
begin
glGetIntegerv(GL_VIEWPORT,@viewport);
glSelectBuffer(512,@buffer);
glRenderMode(GL_SELECT);
glInitNames;
glPushName(0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPickMatrix(mouseX,viewport[3] - mouseY,1.0,1.0,@viewport);
gluPerspective(45.0,(viewport[2] - viewport[0]) / (viewport[3] - viewport[1]),0.1,100.0);
for i := 0 to 3 do
begin
glLoadName(i);
glBegin (GL_TRIANGLES);
glcolor3f(1,0,0);glVertex3f(data[i*9],data[i*9+1],data[i*9+2]);
glcolor3f(0,1,0);glVertex3f(data[i*9+3],data[i*9+4],data[i*9+5]);
glcolor3f(0,0,1);glVertex3f(data[i*9+6],data[i*9+7],data[i*9+8]);
glEnd;
end;
hits := glRenderMode(GL_RENDER);
if(hits > 0)then
begin
SelTriangle := buffer[3];
depth := buffer[1];
for i := 1 to hits-1 do
if(buffer[i*4+1] > depth)then
begin
SelTriangle := buffer[i*4+3];
depth := buffer[i*4+1];
end;
end;
end;
//============================== D R A W O P E N G L ================================
procedure TForm1.Draw;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPerspective(45.0,(viewport[2] - viewport[0]) / (viewport[3] - viewport[1]),0.1,100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
glRotate(dir,0,1,0);
glTranslate(-worldX,worldY-1.5,worldZ-10);
for i := 0 to 3 do
begin
glBegin (GL_TRIANGLES);
glcolor3f(1,0,0);glVertex3f(data[i*9],data[i*9+1],data[i*9+2]);
glcolor3f(0,1,0);glVertex3f(data[i*9+3],data[i*9+4],data[i*9+5]);
glcolor3f(0,0,1);glVertex3f(data[i*9+6],data[i*9+7],data[i*9+8]);
glEnd;
end;
//ieīmē izvēlēto trīstūri
i := selTriangle;
glBegin (GL_LINE_LOOP);
glcolor3f(1,1,1);glVertex3f(data[i*9],data[i*9+1],data[i*9+2]+0.1);
glcolor3f(1,1,1);glVertex3f(data[i*9+3],data[i*9+4],data[i*9+5]+0.1);
glcolor3f(1,1,1);glVertex3f(data[i*9+6],data[i*9+7],data[i*9+8]+0.1);
glcolor3f(1,1,1);glVertex3f(data[i*9],data[i*9+1],data[i*9+2]+0.1);
glEnd;
selection;
SwapBuffers(h_DC);
end;
//============================ M A I N P R O C E D U R E ============================
procedure TForm1.Timer1Timer(Sender: TObject);
begin
DXInput1.Update;
dxdraw1.Surface.Fill(0);
//pogas -------------------------------------
if(isLeft in DXInput1.States)then
begin
dir := dir - 1.5;
if(dir < 0.5)then dir := 360;
end;
if(isRight in DXInput1.States)then
begin
dir := dir + 1.5;
if(dir > 359.5)then dir := 0;
end;
if(isUp in DXInput1.States)then
begin
worldX := worldX + sin(degToRad(dir))*0.1;
worldZ := worldZ + cos(degToRad(dir))*0.1;
end;
if(isDown in DXInput1.States)then
begin
worldX := worldX - sin(degToRad(dir))*0.1;
worldZ := worldZ - cos(degToRad(dir))*0.1;
end;
if(isButton3 in DXInput1.States)then
begin
worldY := worldY+0.1;
end;
if(isButton4 in DXInput1.States)then
begin
worldY := worldY-0.1;
end;
// dxdraw1 -------------------------------------------------------
DXDraw1.Surface.Fill(RGB(100,20,20));
with DXDraw1.Surface.Canvas do
begin
Brush.Style := bsClear;
Font.Color := clWhite;
Font.Size := 10;
Font.Name :='courier new';
Textout( 10, 30, 'dir : '+floattostr(dir));
Textout( 10, 70, 'selTri : '+inttostr(SelTriangle));
Textout( 10, 90, 'hits : '+inttostr(hits));
//Textout( 10, 190,'txSel : '+inttostr(txSelected));
//Textout( 10, 210,'txPal : '+inttostr(txPal[txPalMouseX div 128,txPalMouseY div 128]));
Textout( 10, 230,'buf[0] : '+inttostr(buffer[0]));
Textout( 10, 250,'buf[1] : '+inttostr(buffer[1]));
Textout( 10, 270,'buf[2] : '+inttostr(buffer[2]));
Textout( 10, 290,'buf[3] : '+inttostr(buffer[3]));
Textout( 10, 310,'buf[4] : '+inttostr(buffer[4]));
Textout( 10, 330,'buf[5] : '+inttostr(buffer[5]));
Textout( 10, 350,'buf[6] : '+inttostr(buffer[6]));
Textout( 10, 370,'buf[7] : '+inttostr(buffer[7]));
Textout( 10, 390,'buf[8] : '+inttostr(buffer[8]));
Textout( 10, 410,'buf[9] : '+inttostr(buffer[9]));
Textout( 10, 430,'buf[10] : '+inttostr(buffer[10]));
Textout( 10, 500,'mouseX : '+inttostr(mouseX));
Textout( 10, 520,'mouseY : '+inttostr(form1.clientHeight-mouseY));
release;
end;
DXDraw1.Flip;
//OpenGL Stuff ------------------------
Draw;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
mouseX := X;
mouseY := Y;
end;
//================================= R E S I Z E ========================================
procedure TForm1.FormResize(Sender: TObject);
begin
glViewport( 0, 0, form1.ClientWidth, form1.ClientHeight );
end;
//================================== FormClose ==========================================
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if h_RC<>0 then
begin
wglMakeCurrent(h_DC,0);
wglDeleteContext(h_RC);
end;
if h_DC<>0 then
ReleaseDC(Handle, h_DC);
end;
end. |
|
Back to top |
|
|
s1 Guest
|
Posted: Mon Jan 24, 2005 3:16 pm Post subject: |
|
Kautkāds gļuks sanāca
Code: | unit main;
interface
uses
Windows,
SysUtils,
Classes,
Forms,
OpenGL,
ExtCtrls,
Messages,
DXInput,
Controls,
DXDraws,
Graphics,
math,
StdCtrls, Dialogs;
type
TForm1 = class(TForm)
Timer1: TTimer;
DXInput1: TDXInput;
DXDraw1: TDXDraw;
OpenDialog1: TOpenDialog;
OpenDialog2: TOpenDialog;
DXImageList1: TDXImageList;
procedure Draw;
procedure Selection;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormResize(Sender: TObject);
private
public
end;
const F = 1;
SCRwidth = 800;
SCRheight = 600;
var
h_RC : HGLRC;
h_DC : HDC;
h_wnd: HWND;
Form1 : TForm1;
mouseX : integer;
mouseY : integer;
worldX : double;
worldY : double;
worldZ : double;
dir : double;
counting : boolean;
//------------------------------------
buffer : array [0..511] of GLuint;
hits : GLint;
viewport : array [0..3] of GLint;
depth : integer;
i : longWord;
j : longWord;
SelTriangle : word;
//------------------------
data : array[0..100]of single;
implementation
procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32;
{$R *.DFM}
//============================= S E T U P P I X E L ===================================
function SetupPixelFormat(DC:HDC):boolean;
var
pfd : PIXELFORMATDESCRIPTOR;
ppfd : PPIXELFORMATDESCRIPTOR;
pixelformat : integer;
begin
ppfd := @pfd;
ppfd.nSize := sizeof(PIXELFORMATDESCRIPTOR);
ppfd.nVersion := 1;
ppfd.dwFlags := PFD_DRAW_TO_WINDOW xor PFD_SUPPORT_OPENGL xor PFD_DOUBLEBUFFER;
ppfd.dwLayerMask := PFD_MAIN_PLANE;
ppfd.iPixelType := PFD_TYPE_RGBA;
ppfd.cColorBits := 16;
ppfd.cDepthBits := 16;
ppfd.cAccumBits := 0;
ppfd.cStencilBits := 0;
pixelformat := ChoosePixelFormat(dc, ppfd);
if pixelformat=0 then
begin
MessageBox(0, 'nepareizs pikseļa formāts ', 'Error', MB_OK);
SetupPixelFormat:=FALSE;
exit;
end;
if SetPixelFormat(dc, pixelformat, ppfd)=false then
begin
MessageBox(0, 'nepareizs pikseļa formāts', 'Error', MB_OK);
SetupPixelFormat:=FALSE;
exit;
end;
SetupPixelFormat:=TRUE;
end;
//=========================== I N I T O P E N G L ====================================
procedure initOPenGL;
begin
h_DC := GetDC(form1.Handle);
if(SetupPixelFormat(h_DC) = false) then form1.Close;
h_RC := wglCreateContext(h_DC);
wglMakeCurrent(h_DC, h_RC);
glClearDepth(1);
glEnable (GL_DEPTH_TEST);
glDepthFunc (GL_LESS);
glEnable(GL_TEXTURE_2D);
//glEnable(GL_POLYGON_SMOOTH);
//glEnable(GL_COLOR_MATERIAL);
//glShadeModel(GL_SMOOTH);
//glEnable(GL_LIGHTING);
//glEnable(GL_LIGHT0);
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glViewport( 0, 0, SCRwidth, SCRheight );
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, SCRwidth / SCRheight ,0.1,1000.0);
end;
{===================================== FormCreate ========================================}
procedure TForm1.FormCreate(Sender: TObject);
begin
{//------ 1024 x 768
form1.width := 1032;
form1.Height := 802;
form1.ClientWidth := 1024;
form1.ClientHeight := 768;
}
//------ 800 x 600
form1.width := 808;
form1.Height := 634;
form1.ClientWidth := 800;
form1.ClientHeight := 600;
viewport[0] := 0;
viewport[1] := 0;
viewport[2] := form1.ClientWidth;
viewport[3] := form1.ClientHeight;
initOpenGL;
// pogu sagatavošana -------------------------------------
form1.DXInput1.Keyboard.KeyAssigns[isButton3,0]:= VK_NUMPAD0;
form1.DXInput1.Keyboard.KeyAssigns[isButton4,0]:= VK_NUMPAD1;
//data-----------------------------------------
data[0] := -1;
data[1] := -1;
data[2] := 1;
data[3] := 1;
data[4] := -1;
data[5] := 1;
data[6] := 1;
data[7] := 1;
data[8] := 1;
data[9] := 1;
data[10] := 1;
data[11] := 1;
data[12] := -1;
data[13] := 1;
data[14] := 1;
data[15] := -1;
data[16] := -1;
data[17] := 1;
data[18] := -1;
data[19] := -1;
data[20] := -1;
data[21] := -1;
data[22] := -1;
data[23] := 1;
data[24] := -1;
data[25] := 1;
data[26] := 1;
data[27] := -1;
data[28] := 1;
data[29] := 1;
data[30] := -1;
data[31] := 1;
data[32] := -1;
data[33] := -1;
data[34] := -1;
data[35] := -1;
end;
//============================== S E L E C T I O N ===============================
procedure TForm1.Selection;
begin
glGetIntegerv(GL_VIEWPORT,@viewport);
glSelectBuffer(512,@buffer);
glRenderMode(GL_SELECT);
glInitNames;
glPushName(0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPickMatrix(mouseX,viewport[3] - mouseY,1.0,1.0,@viewport);
gluPerspective(45.0,(viewport[2] - viewport[0]) / (viewport[3] - viewport[1]),0.1,100.0);
for i := 0 to 3 do
begin
glLoadName(i);
glBegin (GL_TRIANGLES);
glcolor3f(1,0,0);glVertex3f(data[i*9],data[i*9+1],data[i*9+2]);
glcolor3f(0,1,0);glVertex3f(data[i*9+3],data[i*9+4],data[i*9+5]);
glcolor3f(0,0,1);glVertex3f(data[i*9+6],data[i*9+7],data[i*9+8]);
glEnd;
end;
hits := glRenderMode(GL_RENDER);
if(hits > 0)then
begin
SelTriangle := buffer[3];
depth := buffer[1];
for i := 1 to hits-1 do
if(buffer[i*4+1] > depth)then
begin
SelTriangle := buffer[i*4+3];
depth := buffer[i*4+1];
end;
end;
end;
//============================== D R A W O P E N G L ================================
procedure TForm1.Draw;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPerspective(45.0,(viewport[2] - viewport[0]) / (viewport[3] - viewport[1]),0.1,100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
glRotate(dir,0,1,0);
glTranslate(-worldX,worldY-1.5,worldZ-10);
for i := 0 to 3 do
begin
glBegin (GL_TRIANGLES);
glcolor3f(1,0,0);glVertex3f(data[i*9],data[i*9+1],data[i*9+2]);
glcolor3f(0,1,0);glVertex3f(data[i*9+3],data[i*9+4],data[i*9+5]);
glcolor3f(0,0,1);glVertex3f(data[i*9+6],data[i*9+7],data[i*9+8]);
glEnd;
end;
//ieīmē izvēlēto trīstūri
i := selTriangle;
glBegin (GL_LINE_LOOP);
glcolor3f(1,1,1);glVertex3f(data[i*9],data[i*9+1],data[i*9+2]+0.1);
glcolor3f(1,1,1);glVertex3f(data[i*9+3],data[i*9+4],data[i*9+5]+0.1);
glcolor3f(1,1,1);glVertex3f(data[i*9+6],data[i*9+7],data[i*9+8]+0.1);
glcolor3f(1,1,1);glVertex3f(data[i*9],data[i*9+1],data[i*9+2]+0.1);
glEnd;
selection;
SwapBuffers(h_DC);
end;
//============================ M A I N P R O C E D U R E ============================
procedure TForm1.Timer1Timer(Sender: TObject);
begin
DXInput1.Update;
dxdraw1.Surface.Fill(0);
//pogas -------------------------------------
if(isLeft in DXInput1.States)then
begin
dir := dir - 1.5;
if(dir < 0.5)then dir := 360;
end;
if(isRight in DXInput1.States)then
begin
dir := dir + 1.5;
if(dir > 359.5)then dir := 0;
end;
if(isUp in DXInput1.States)then
begin
worldX := worldX + sin(degToRad(dir))*0.1;
worldZ := worldZ + cos(degToRad(dir))*0.1;
end;
if(isDown in DXInput1.States)then
begin
worldX := worldX - sin(degToRad(dir))*0.1;
worldZ := worldZ - cos(degToRad(dir))*0.1;
end;
if(isButton3 in DXInput1.States)then
begin
worldY := worldY+0.1;
end;
if(isButton4 in DXInput1.States)then
begin
worldY := worldY-0.1;
end;
// dxdraw1 -------------------------------------------------------
DXDraw1.Surface.Fill(RGB(100,20,20));
with DXDraw1.Surface.Canvas do
begin
Brush.Style := bsClear;
Font.Color := clWhite;
Font.Size := 10;
Font.Name :='courier new';
Textout( 10, 30, 'dir : '+floattostr(dir));
Textout( 10, 70, 'selTri : '+inttostr(SelTriangle));
Textout( 10, 90, 'hits : '+inttostr(hits));
//Textout( 10, 190,'txSel : '+inttostr(txSelected));
//Textout( 10, 210,'txPal : '+inttostr(txPal[txPalMouseX div 128,txPalMouseY div 128]));
Textout( 10, 230,'buf[0] : '+inttostr(buffer[0]));
Textout( 10, 250,'buf[1] : '+inttostr(buffer[1]));
Textout( 10, 270,'buf[2] : '+inttostr(buffer[2]));
Textout( 10, 290,'buf[3] : '+inttostr(buffer[3]));
Textout( 10, 310,'buf[4] : '+inttostr(buffer[4]));
Textout( 10, 330,'buf[5] : '+inttostr(buffer[5]));
Textout( 10, 350,'buf[6] : '+inttostr(buffer[6]));
Textout( 10, 370,'buf[7] : '+inttostr(buffer[7]));
Textout( 10, 390,'buf[8] : '+inttostr(buffer[8]));
Textout( 10, 410,'buf[9] : '+inttostr(buffer[9]));
Textout( 10, 430,'buf[10] : '+inttostr(buffer[10]));
Textout( 10, 500,'mouseX : '+inttostr(mouseX));
Textout( 10, 520,'mouseY : '+inttostr(form1.clientHeight-mouseY));
release;
end;
DXDraw1.Flip;
//OpenGL Stuff ------------------------
Draw;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
mouseX := X;
mouseY := Y;
end;
//================================= R E S I Z E ========================================
procedure TForm1.FormResize(Sender: TObject);
begin
glViewport( 0, 0, form1.ClientWidth, form1.ClientHeight );
end;
//================================== FormClose ==========================================
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if h_RC<>0 then
begin
wglMakeCurrent(h_DC,0);
wglDeleteContext(h_RC);
end;
if h_DC<>0 then
ReleaseDC(Handle, h_DC);
end;
end.
|
|
|
Back to top |
|
|
gazz
Joined: 03 Jan 2004 Posts: 355 Location: Teika
|
Posted: Mon Jan 24, 2005 3:46 pm Post subject: neliels offtopic |
|
neliels offtopic: s1 - tew dereetu regjistreeties, jo kaa izskataas tad tew jautaajumu buus weel, un tad tu wareesi arii modificeet sawus postus, lai nesanaak kaa she - 2 reizes iepostots wiens un tas pats garsh garsh kods... |
|
Back to top |
|
|
s1 Guest
|
Posted: Tue Jan 25, 2005 12:05 am Post subject: |
|
GIGA, vai nevari caurskatīt kodu? Varbūt tu redzi kādu uzkrītošu kļūdu. Man nekādi pašam nesanāk, mēģinu gan tā, gan šitā. Skatījos citur tīklā, visur šī lieta tiek risināta identiski (kods tāds pats).Taču man kautkā nestrādā. Varbūt vainā Delfīnā ... |
|
Back to top |
|
|
GiGa Indago Uzvarētājs
Joined: 25 Sep 2003 Posts: 887
|
Posted: Tue Jan 25, 2005 12:15 am Post subject: |
|
Pirmkaart - regjistreejies, lai vari savas "kljuumes" peec tam labot
Otrkaart, neposto nekad shitaa visu pogrammu
Treshkaart, visu to caurlasiit man nav laika un gribas, bet draw un selection funkcijas izskataas pareizas. Neredzu iemeslu, kaapeec taas nestraadaa...
ko es iesaku dariit shitaadaa gadiijumaa - paarraksti visu no jauna izklausaas stulbi, bet man praksee diezgan biezji gadaas uzrakstiit paarsimt rindinjas un tad dienaam mekleet bugu, bet uzrakstot to pashu veelreiz viss aiziet un tad saprotu, ka visa kljuuda sleepaas vienaa samainiitaa "c" burtaa "r" vietaa (row/column major matricu gadiijumaa ) un kaut ko taadu atrast ir ljoti gruuti _________________
|
|
Back to top |
|
|
s1 Guest
|
Posted: Wed Mar 30, 2005 9:39 am Post subject: |
|
Izskatās ka esmu atradis vainu, kādēl man nestrādāja selection Jau no paša sākuma zināju, ka nav kautkas kārtībā ar Z buferi. Problēmas atrisinājums : glDepthRange(0.0, 0.1); 2. parametru vajadzēja uzlikt 0.1. Jūs nevien snevarēsiet iedomāties, kā līdz šim es kompensēju šo gļuku |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|