HLFX.Ru Forum
Показать все 2 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- OpenGL (https://hlfx.ru/forum/forumdisplay.php?forumid=7)
-- Проблема с тайловыми текстурами (не хл) (https://hlfx.ru/forum/showthread.php?threadid=1775)


Отправлено AlMod 10-04-2009 в 16:09:

Проблема с тайловыми текстурами (не хл)

В данный момент занят с тем, что пишу игру по программированию в институт и столкнулся с небольшой проблемой - глифы у поля рисуются абы как.

а теперь код..

Процедура вывода текстурированых изображений

C++ Source Code:
1
void DrawSquareTexture(int x1, int y1, int x2, int y2, BaseTexture *texture, int glyph)
2
{
3
  float _x1, _x2, _y1, _y2;
4
  _x1 = TransferXPixelToGL(x1);
5
  _x2 = TransferXPixelToGL(x2);
6
  _y1 = TransferYPixelToGL(y1);
7
  _y2 = TransferYPixelToGL(y2);
8
 
9
  unsigned int *tex = texture->GetPointer();
10
 
11
  float tx1, tx2;
12
  int total = texture->GetGlyph();
13
 
14
  if (glyph>total) glyph = total;
15
 
16
  if (glyph)
17
  {
18
    tx1 = (float)(glyph-1)/total;
19
    tx2 = (float)glyph/total;
20
  }
21
  else
22
  {
23
    tx1 = 0;
24
    tx2 = 1;
25
  }
26
 
27
  if (texture!=NULL)
28
  {
29
    glBindTexture(GL_TEXTURE_2D, *tex);
30
    glBegin(GL_QUADS);
31
    glTexCoord2f(tx1,0);
32
    glVertex2f(_x1,_y1);
33
    glTexCoord2f(tx1,1);
34
    glVertex2f(_x1,_y2);
35
    glTexCoord2f(tx2,1);
36
    glVertex2f(_x2,_y2);
37
    glTexCoord2f(tx2,0);
38
    glVertex2f(_x2,_y1);
39
    glEnd();
40
  }
41
  else
42
  {
43
    glBegin(GL_QUADS);
44
    glVertex2f(_x1,_y1);
45
    glVertex2f(_x1,_y2);
46
    glVertex2f(_x2,_y2);
47
    glVertex2f(_x2,_y1);
48
    glEnd();
49
  }
50
}


Класс текстуры
C++ Source Code:
1
class BaseTexture
2
{
3
private:
4
public:
5
  int sizeX, sizeY;
6
  int glyph;//, glyphY;
7
  unsigned int texture;
8
  char *name;
9
  void InitTexture(int s1, int s2, int g) { sizeX = s1; sizeY = s2; glyph = g; };
10
  void LoadTexture(char *image) { name = image; BindTexture(name,&texture); };
11
  unsigned int *GetPointer() { return &texture; };
12
  unsigned int GetTexture() { return texture; };
13
  int GetGlyph() { return sizeX / glyph; }
14
};


Вывод на экран
C++ Source Code:
1
void BaseGameField::Redraw()
2
{
3
  for (int i=0;i<52;i++)
4
  {
5
    for (int j=0;j<52;j++)
6
    {
7
      switch (field[i][j])
8
      {
9
        case 0: DrawSquareTexture(sx+i*8,sy+j*8,sx+(i+1)*8,sy+(j+1)*8,&textures[TEXTURE_FIELD],1);
10
        break;
11
      }
12
    }
13
  }
14
}


sx и sy = 32

Жду помощи от знатоков ГЛ, всю бошку уже себе сломал

__________________
Сайт поддержки кодеров на AMX Mod X


Отправлено AlMod 12-04-2009 в 06:32:

Благодаря Дядь Мише проблема решена, за что ему спасибо

__________________
Сайт поддержки кодеров на AMX Mod X


Временная зона GMT. Текущее время 12:34.
Показать все 2 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024