Хочу видеорежим 1280*1024*24bit !
Модератор: Модераторы
-
Trojan Bot
- новенький
- Сообщения: 10
- Зарегистрирован: 11.01.2010 14:17:34
Хочу видеорежим 1280*1024*24bit !
Хотелось бы иметь доступ к полноэкранному видеорежиму с высоким разрешением и глубиной цвета как минимум 16bit, и вожможность просто выводить цветные пиксели в координатах xy. Как это можно сделать в Opengl? Есть ли какие-нибудь статьи, проливающие свет на видеопамять и прочие нюансы? Помогите пожалуйста, а то 320*200*8bit мне уже ВО где...
Именно в OpenGL? Тогда Вам нужно найти книгу Михаила Краснова "OpenGL. Графика в проектах Delphi ". Там об этом всё написано.
-
Trojan Bot
- новенький
- Сообщения: 10
- Зарегистрирован: 11.01.2010 14:17:34
Delphi - это не мое. я читал статьи "FPC и Opengl" - вроде все понятно, но там сразу переходят на примитивы, объекты, освещение... А как сделать самый народный Putpixel там не упоминается (возможно). Хотелось бы сначала самому поюзать 2D, а потом уже переходить на библиотечную графику.
Как сделать Putpixel в Opengl?
Как сделать Putpixel в Opengl?
Trojan Bot писал(а):Delphi - это не мое.
Так я и не предлагаю Вам на Delphi переходить, Вы уж меня так страшно не позорьте перед людьми.
Вы книжку просто почитайте. Ведь ни для кого не секрет, что FreePascal и Delphi - это, практически, близнецы-братья. И там и там используется практически один и тот же код при написании своего приложения.
А вот на счёт пикселей, боюсь Вы не туда смотрите. OpenGL как раз и создавался в расчёте на работу с объектами и тем, что Вы называете примитивами. Если просто хотите покидать на экран пикселы, то подойдёт обычная графическая библиотека FP или WinAPI. Зачем для этого использовать OpenGL, смысл то какой?
Если Вы непременно настаиваете на точках в OpenGL (
Код: Выделить всё
glPointSize (30); // размер точки в пикселях
glColor3f (1.0, 0.0, 0.5); //Цвет точки в RGB
glBegin(GL_POINTS)
glVertex2f(X, Y); //Координаты точки
glEnd;
SwapBuffers(ХэндлПоверхностиКудаРисовать);Если сравнить с WinAPI, то строчек кода для такой простой операции получается больше.
-
Trojan Bot
- новенький
- Сообщения: 10
- Зарегистрирован: 11.01.2010 14:17:34
Спасибо, буду шарить WinApi. Хотелось бы посмотреть на аналогичный код для WinApi... Не подскажешь ли нужную функцию? 
Спасибо, буду шарить WinApi. Хотелось бы посмотреть на аналогичный код для WinApi... Не подскажешь ли нужную функцию?
WinApi не нужен.
Лучше используй кроссплатформенный код. Обьект TCanvas тебе в помощь. Поставить точку на экране проще простого:
Код: Выделить всё
Canvas.Pixels[x,y]:=clGreen;Причём под виндой это всё-равно обёртка над WinApi , только проще и кроссплатформенней.
Это раз. А во-вторых, на будущее забудь про попиксельную обработку графики - так никто не делает (разве-что в крайних случаях и не через "поставить точку на экране", а через что-то вроде "сперва попиксельно обработать буфер, а затем его целиком вывести на экран" или "обработать каждый пиксел специальной программой прямо в видеопамяти").
ПС. Посмотри демки из lazarus\examples.
ПС2. А если для серьёзных вещей графика нужна, то всё-равно надо будет OpenGL/DirectX изучать, только опять таки про попиксельный вывод примитивов забудь, разве-что почитай про шейдеры.
Trojan Bot
Безобразничаем на рабочем столе.
Здесь я специально ввёл несколько генераторов чисел, чтобы точки появлялись в разных случайных местах экрана. Вместо функции RGB() можно подставить конкретное число цвета.
Безобразничаем на рабочем столе.
Код: Выделить всё
Uses Windows;
...
Randomize;
DC:=GetDC(0); //Получим контекст устройства рабочего стола
For i:=0 To 999 Do
SetPixel(DC, Random(Кол-во пикселей по горизонтали), Random(Кол-во пикселей по вертикали), RGB(R, G, B));Здесь я специально ввёл несколько генераторов чисел, чтобы точки появлялись в разных случайных местах экрана. Вместо функции RGB() можно подставить конкретное число цвета.
Trojan Bot
glDrawPixels
glDrawPixels
-
Trojan Bot
- новенький
- Сообщения: 10
- Зарегистрирован: 11.01.2010 14:17:34
Спасибо всем!
Все же буду юзать Opengl, потому как хочу делать игры. Щас читаю книгу Краснова.
P.S.
Над десктопом весело поиздевался

P.S.
Над десктопом весело поиздевался
Потому что стандартный SDL в 2D это под виндой тот же самый старый и медленный DirectDraw. Его уже для игр никто не использует. А если SDL и используеться, то только для создания окна (таймеров, инпута и пр. мелких вещей), а для рисования всё-равно используют OpenGL.
