Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

glArrayElementEXT рисует, а вот glDrawArraysEXT не рисует :-) [Delphi, Windows]


MrAngel ©   (2003-11-14 15:05:00) 

Я рисую обыкновенный треугольник. Примерный код
прорисовки

glBegin(GL_TRIANGLES);
glDrawArraysEXT(GL_TRIANGLES,0,1);
glEnd;

Массив обьявляется и заносится следующим образом

type
TVertex3f = record
  X : GLfloat;
  Y : GLfloat;
  Z : GLfloat;
end;

TDelphi3DForm = class(TForm)
...
private
...
  Vertexes : array [0..2] of TVertex3f;
public
...
end;

var
Delphi3DForm: TDelphi3DForm;

implementation

{$R *.dfm}

procedure TDelphi3DForm.FormCreate(Sender: TObject);
begin
  ...

  glEnable(GL_DEPTH_TEST);

//Подключаем расширение
  glext_LoadExtension('GL_EXT_vertex_array');
  glEnable(GL_VERTEX_ARRAY_EXT);

//Заносим данные
  Vertexes[0].X := -10;
  Vertexes[0].Y := -10;
  Vertexes[0].Z := -20;
  Vertexes[1].X := 10;
  Vertexes[1].Y := -10;
  Vertexes[1].Z := -20;
  Vertexes[2].X := 0;
  Vertexes[2].Y := 10;
  Vertexes[2].Z := -20;

//Заносим неисвестно куда
  glVertexPointerEXT(3,GL_FLOAT,0,3,@Vertexes);

...
end;

Треугольник через glDrawArraysEXT не прорисовывается, однако, если использовать в качестве прорисовки следующий код, то всё в порядке

glBegin(GL_TRIANGLES);
  glArrayElementEXT(0); //Рисуем первую точку
  glArrayElementEXT(1); //Вторую
  glArrayElementEXT(2); //Третью
glEnd;

Может кто знает, что я не так делаю в первом случае?


mrAld   (2003-11-15 18:51:00) [1]

Ну и правильно. glBegin и glEnd открывают и закрывают стандартные примитивы OpenGL


MrAngel   (2003-11-14 15:12:00) [2]

Хмм я всё таки решил эту проблему - методом тыка.

Правильный код прорисовки следующий
glDrawArraysEXT(GL_TRIANGLES,0,3);

без glBegin(GL_TRIANGLES); и glEnd;


Наверх

Титульная страница Поиск, карта сайта Написать письмо