dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Milzīga problēma
Goto page Previous  1, 2
 
dev.gamez.lv Forum Index -> Programmēšana
View previous topic :: View next topic  
Author Message
s1
Guest





PostPosted: 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. Sad

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





PostPosted: 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 Question

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
Indago Uzvarētājs


Joined: 25 Sep 2003
Posts: 887

PostPosted: 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
View user's profile Send e-mail
s1
Guest





PostPosted: 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





PostPosted: Mon Jan 24, 2005 3:16 pm    Post subject:

Kautkāds gļuks sanāca Laughing
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

PostPosted: 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... Smile
Back to top
View user's profile Send e-mail
s1
Guest





PostPosted: 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ā Rolling Eyes ...
Back to top
GiGa
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 25 Sep 2003
Posts: 887

PostPosted: Tue Jan 25, 2005 12:15 am    Post subject:

Pirmkaart - regjistreejies, lai vari savas "kljuumes" peec tam labot Wink
Otrkaart, neposto nekad shitaa visu pogrammu Smile
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 Smile 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 Wink ) un kaut ko taadu atrast ir ljoti gruuti Wink
_________________
Back to top
View user's profile Send e-mail
s1
Guest





PostPosted: Wed Mar 30, 2005 9:39 am    Post subject:

Izskatās ka esmu atradis vainu, kādēl man nestrādāja selection Smile 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 Laughing
Back to top
Display posts from previous:   
dev.gamez.lv Forum Index -> Programmēšana All times are GMT + 2 Hours
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
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