Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2010, 19:44   #1
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
Восклицание Проблема с OpenGL

Дело обстоит так. Решил я выучить OpenGL в Delphi, нашёл учебник(как мне показалось, приличный), решил просто ввести одну программку, которая создаёт несколько точек на форме. Но проблема в том, что программа запускается, однако точек не рисует! Может, кто нибудь знает в чём проблема?
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OpenGL, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
     glViewPort (0, 0, ClientWidth, ClientHeight); 
     glColor3f (1.0,1.0,1.0);
     glPointSize (20);
     glBegin (GL_POINTS) ;
     glVertex2f (-1,-1) ;
     glVertex2f(-1, 1);
     glVertex2f (0, 0);
     glVertex2f (1, -1);
     glVertex2f (1, 1);
     glEnd;
     SwapBuffers(Canvas.Handle);
end;

end.
_-Re@l-_ вне форума Ответить с цитированием
Старый 20.05.2010, 21:00   #2
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

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

Код:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  OpenGL;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormDestroy(Sender: TObject);

  private
    hrc: HGLRC;  
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{=======================================================================
Перерисовка окна}
procedure TForm1.FormPaint(Sender: TObject);
begin
 wglMakeCurrent(Canvas.Handle, hrc);

 glViewPort (0, 0, ClientWidth, ClientHeight); // область вывода

 glClearColor (0.5, 0.5, 0.75, 1.0); // цвет фона
 glClear (GL_COLOR_BUFFER_BIT);      // очистка буфера цвета

 glPointSize (20);                   // размер точек
 glColor3f (1.0, 0.0, 0.5);          // текущий цвет примитивов
 glBegin (GL_POINTS);                // открываем командную скобку
   glVertex2f (-1, -1);
   glVertex2f (-1, 1);
   glVertex2f (0, 0);
   glVertex2f (1, -1);
   glVertex2f (1, 1);
 glEnd;                              // закрываем командную скобку

 SwapBuffers(Canvas.Handle);         // содержимое буфера - на экран
 wglMakeCurrent(0, 0);
end;
{=======================================================================
Формат пикселя}
procedure SetDCPixelFormat (hdc : HDC);
var
 pfd : TPixelFormatDescriptor;
 nPixelFormat : Integer;
begin
 FillChar (pfd, SizeOf (pfd), 0);
 pfd.dwFlags  := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
 nPixelFormat := ChoosePixelFormat (hdc, @pfd);
 SetPixelFormat (hdc, nPixelFormat, @pfd);
end;
{=======================================================================
Создание формы}
procedure TForm1.FormCreate(Sender: TObject);
begin
 SetDCPixelFormat(Canvas.Handle);
 hrc := wglCreateContext(Canvas.Handle);
end;
{=======================================================================
Конец работы приложения}
procedure TForm1.FormDestroy(Sender: TObject);
begin
 wglDeleteContext(hrc);
end;

end.
И книга кстати очень хорошая
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 21.05.2010, 13:07   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Ты прав, это книга Краснова
_-Re@l-_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с основами Opengl rokweb Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 15.03.2010 12:43
проблема с OpenGL Willer Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 02.02.2010 14:12
Проблема с движком на OpenGL Granus Мультимедиа в Delphi 11 11.01.2010 15:45
OpenGL: проблема с цветом N!ckeL Общие вопросы Delphi 5 10.01.2010 15:14
Проблема с проектом в OpenGL 30MBU Помощь студентам 4 12.10.2009 14:44