Хочу видеорежим 1280*1024*24bit !

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Хочу видеорежим 1280*1024*24bit !

Сообщение Trojan Bot » 30.01.2010 03:44:04

Хотелось бы иметь доступ к полноэкранному видеорежиму с высоким разрешением и глубиной цвета как минимум 16bit, и вожможность просто выводить цветные пиксели в координатах xy. Как это можно сделать в Opengl? Есть ли какие-нибудь статьи, проливающие свет на видеопамять и прочие нюансы? Помогите пожалуйста, а то 320*200*8bit мне уже ВО где...
Trojan Bot
новенький
 
Сообщения: 10
Зарегистрирован: 11.01.2010 15:17:34

Re: Хочу видеорежим 1280*1024*24bit !

Сообщение Vadim » 30.01.2010 08:37:37

Именно в OpenGL? Тогда Вам нужно найти книгу Михаила Краснова "OpenGL. Графика в проектах Delphi ". Там об этом всё написано.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Хочу видеорежим 1280*1024*24bit !

Сообщение Trojan Bot » 30.01.2010 12:51:07

Delphi - это не мое. я читал статьи "FPC и Opengl" - вроде все понятно, но там сразу переходят на примитивы, объекты, освещение... А как сделать самый народный Putpixel там не упоминается (возможно). Хотелось бы сначала самому поюзать 2D, а потом уже переходить на библиотечную графику.
Как сделать Putpixel в Opengl?
Trojan Bot
новенький
 
Сообщения: 10
Зарегистрирован: 11.01.2010 15:17:34

Re: Хочу видеорежим 1280*1024*24bit !

Сообщение Vadim » 30.01.2010 13:34:22

Trojan Bot писал(а):Delphi - это не мое.

Так я и не предлагаю Вам на Delphi переходить, Вы уж меня так страшно не позорьте перед людьми. :D
Вы книжку просто почитайте. Ведь ни для кого не секрет, что FreePascal и Delphi - это, практически, близнецы-братья. И там и там используется практически один и тот же код при написании своего приложения.
А вот на счёт пикселей, боюсь Вы не туда смотрите. OpenGL как раз и создавался в расчёте на работу с объектами и тем, что Вы называете примитивами. Если просто хотите покидать на экран пикселы, то подойдёт обычная графическая библиотека FP или WinAPI. Зачем для этого использовать OpenGL, смысл то какой?
Если Вы непременно настаиваете на точках в OpenGL ( ;) ), то надо в программные скобки добавить специальную константу - GL_POINTS:
Код: Выделить всё
glPointSize (30);   // размер точки в пикселях
glColor3f (1.0, 0.0, 0.5);   //Цвет точки в RGB
glBegin(GL_POINTS)
  glVertex2f(X, Y);   //Координаты точки
glEnd;
SwapBuffers(ХэндлПоверхностиКудаРисовать);

Если сравнить с WinAPI, то строчек кода для такой простой операции получается больше.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Хочу видеорежим 1280*1024*24bit !

Сообщение Trojan Bot » 30.01.2010 16:18:47

Спасибо, буду шарить WinApi. Хотелось бы посмотреть на аналогичный код для WinApi... Не подскажешь ли нужную функцию? :roll:
Trojan Bot
новенький
 
Сообщения: 10
Зарегистрирован: 11.01.2010 15:17:34

Re: Хочу видеорежим 1280*1024*24bit !

Сообщение FedeX » 30.01.2010 17:50:56

Спасибо, буду шарить WinApi. Хотелось бы посмотреть на аналогичный код для WinApi... Не подскажешь ли нужную функцию? :roll:

WinApi не нужен. :roll:
Лучше используй кроссплатформенный код. Обьект TCanvas тебе в помощь. Поставить точку на экране проще простого:
Код: Выделить всё
Canvas.Pixels[x,y]:=clGreen;

Причём под виндой это всё-равно обёртка над WinApi , только проще и кроссплатформенней.
Это раз. А во-вторых, на будущее забудь про попиксельную обработку графики - так никто не делает (разве-что в крайних случаях и не через "поставить точку на экране", а через что-то вроде "сперва попиксельно обработать буфер, а затем его целиком вывести на экран" или "обработать каждый пиксел специальной программой прямо в видеопамяти").
ПС. Посмотри демки из lazarus\examples.
ПС2. А если для серьёзных вещей графика нужна, то всё-равно надо будет OpenGL/DirectX изучать, только опять таки про попиксельный вывод примитивов забудь, разве-что почитай про шейдеры.
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: Хочу видеорежим 1280*1024*24bit !

Сообщение Vadim » 30.01.2010 18:16:56

Trojan Bot
Безобразничаем на рабочем столе. :)
Код: Выделить всё
Uses Windows;
...
Randomize;
DC:=GetDC(0);  //Получим контекст устройства рабочего стола
For i:=0 To 999 Do
  SetPixel(DC, Random(Кол-во пикселей по горизонтали), Random(Кол-во пикселей по вертикали), RGB(R, G, B));

Здесь я специально ввёл несколько генераторов чисел, чтобы точки появлялись в разных случайных местах экрана. Вместо функции RGB() можно подставить конкретное число цвета.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Хочу видеорежим 1280*1024*24bit !

Сообщение Дож » 30.01.2010 19:41:15

Trojan Bot
glDrawPixels
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Хочу видеорежим 1280*1024*24bit !

Сообщение Trojan Bot » 30.01.2010 22:47:01

Спасибо всем! :D Все же буду юзать Opengl, потому как хочу делать игры. Щас читаю книгу Краснова.

P.S.
Над десктопом весело поиздевался :mrgreen: :mrgreen: :mrgreen:
Trojan Bot
новенький
 
Сообщения: 10
Зарегистрирован: 11.01.2010 15:17:34

Re: Хочу видеорежим 1280*1024*24bit !

Сообщение bw » 31.01.2010 17:57:40

Почему не SDL, если нужно только 2D?

..bw
Аватара пользователя
bw
постоялец
 
Сообщения: 359
Зарегистрирован: 01.12.2005 11:36:23
Откуда: Усть-Илимск

Re: Хочу видеорежим 1280*1024*24bit !

Сообщение FedeX » 31.01.2010 20:20:55

Потому что стандартный SDL в 2D это под виндой тот же самый старый и медленный DirectDraw. Его уже для игр никто не использует. А если SDL и используеться, то только для создания окна (таймеров, инпута и пр. мелких вещей), а для рисования всё-равно используют OpenGL.
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru