Четверг, 21 Ноября 2024, 21:24

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как на с++ делать графические приложения
elianyyfДата: Понедельник, 27 Октября 2014, 01:45 | Сообщение # 1
был не раз
Сейчас нет на сайте
Обычно подходя к этому вопросу сразу советуют всякие опенгл, директы и прочие графические библиотеки. Задавал недавно вопрос собственно вопрос по opengl, но потом стало интересно, как это все работает.
Вопрос - как с помощью с++ без различных библиотек, с нуля, написать код, который создает, например, окно(не юзая вин апи), отрисовать что то и т.д. Если я правильно понял, opengl работает используя .dll библиотеки, например в виндовс opengl32.dll. Но есть и другие библиотеки, и нету там никаких .dll.
Не понятно, как с помощью с++ можно создать графическое приложение.
Спасибо.
OrdanДата: Понедельник, 27 Октября 2014, 02:23 | Сообщение # 2
Главный зомби
Сейчас нет на сайте
elianyyf, рисуй канвасом какие проблемы) Тут где то делали рогалик на чистом канвасе и нормально.

Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)

Мои проекты ТЫК
Мои видяхи на ютубэ ТЫК

Если ты споришь с идиотом, вероятно тоже самое делает и он.
Snake174Дата: Понедельник, 27 Октября 2014, 06:23 | Сообщение # 3
участник
Сейчас нет на сайте
Цитата
написать код, который создает, например, окно(не юзая вин апи)

Как ты себе это представляешь?

Цитата
как с помощью с++ без различных библиотек

Откуда такая неприязнь к различным библиотекам? Это вполне нормально пользоваться сторонними библиотеками для каких-то своих нужд.

Если уж так хочется делать всё с нуля, всё равно придётся использовать всякие вин апи.


Не следует обманывать инспектора
Pipmak Assistant
Love2D Exporter
Love2D-Helpers
Old Consoles Games
HPlusDieseДата: Понедельник, 27 Октября 2014, 13:13 | Сообщение # 4
участник
Сейчас нет на сайте
Цитата elianyyf ()
Не понятно, как с помощью с++ можно создать графическое приложение.

Если напишешь свою ОС, то можно. Иначе никак.
AlkoshaДата: Понедельник, 27 Октября 2014, 13:41 | Сообщение # 5
участник
Сейчас нет на сайте
Цитата elianyyf ()
отрисовать что то и т.д


Я конечно не экспэрт в таких делах, но полагаю, что тут только есть вариант залезть в ДОС, предварительно распаковав турбо си-пи-пи от Борланда. Делаешь асмовскую вставку
Код
asm
     mov ax,13h
     int 10h
     end;  

И в режиме 320*240*8bit рисуешь попиксельно всё шо хошь напрямую,
по адресам сегмента 0XA000
Код

pokeb(0XA000, x*320+y,[0-255])


Никакого тебе высокоуровневого программирования, сам себе хозяин.

Но лучше для ДОСа юзать Watcom.

Добавлено (27.10.2014, 13:41)
---------------------------------------------
Цитата elianyyf ()
Вопрос - как с помощью с++ без различных библиотек, с нуля,

Относительно аппаратной графики, как уже было сказано выше - напиши свою ОСь.... С НУЛЯ.


Сообщение отредактировал Alkosha - Понедельник, 27 Октября 2014, 13:42
SEvgДата: Понедельник, 27 Октября 2014, 15:02 | Сообщение # 6
Алхимик
Сейчас нет на сайте
Цитата elianyyf ()
Но есть и другие библиотеки, и нету там никаких .dll.

Конечно - это статические библиотеки, которые по сути будут встроены в исполняемый файл.

Советую взять любую библиотеку и начать её использовать... Или даже полноценный графический движок...


Сообщение отредактировал SEvg - Понедельник, 27 Октября 2014, 15:03
rrrferДата: Суббота, 15 Ноября 2014, 07:18 | Сообщение # 7
частый гость
Сейчас нет на сайте
Цитата
Вопрос - как с помощью с++ без различных библиотек, с нуля, написать код, который создает, например, окно(не юзая вин апи), отрисовать что то и т.д.
...
Не понятно, как с помощью с++ можно создать графическое приложение.

Никак на С++ ты графическое приложение не создашь. В стандарте языка нет ни окон, ни графики вообще.
Окошко - это примитив операционной системы, поэтому ты неизбежно будешь юзать API, либо напрямую, либо косвенно.

В стандартной библиотеке не планируется никакой графики и окошек - даже в бусте нет намека на это.
RangerДата: Суббота, 15 Ноября 2014, 08:37 | Сообщение # 8
почти ветеран
Сейчас нет на сайте
В досе, как было написано выше, можно писать в видеопамять. причем даже asm вставки не требуются. (только для скорости)
Но, не уверен, что в Винде можно общаться с видеокартой напрямую.


rrrferДата: Суббота, 15 Ноября 2014, 13:04 | Сообщение # 9
частый гость
Сейчас нет на сайте
Цитата
В досе, как было написано выше, можно писать в видеопамять. причем даже asm вставки не требуются. (только для скорости)

Вы уверены что дело в ДОСе? - я не уверен.
Спорить стопудово не буду, в вопросе я не шарю, но почти уверен, что доступ в видеопамять давал BIOS - в нем стопудово были так называемые "видеофункции".

Когда-то мне нравились книги фролова, можете почитать про видеопамять и какие трюки ей можно делать: http://frolov-lib.ru/books/bsp/v03/ch5_2.htm

В примере выше (на который вы ссылаетесь) дергается int 10h - а это функция видеосервиса BIOS, почитать ее возможности можно тут: http://www.codenet.ru/progr/dos/int_0009.php

Т.е. DOS тут вообще не причем, дело в БИОСе, вместо directX (который дает прямой доступ к видеопамяти в Windows) раньше юзались функции BIOS.
В Windows эти штуки МОГУТ (не гарантируется, т.е.) работать в режиме совместимости.
Эти же функции можно дергать в линуксе, например.
Операционная система вообще не важна, биос находится в вашей материнской плате - вы можете его даже из болженос использовать xD.

Опять же спорить не буду, но я думаю, что в windows доступ к биосу ограничен из соображений безопасности.

Добавлено (15.11.2014, 13:04)
---------------------------------------------
Еще раз.

Цитата
причем даже asm вставки не требуются. (только для скорости)

Покажите как без ассемблерных вставок, пожалуйста.
-l33t-h4xx-Дата: Суббота, 15 Ноября 2014, 13:35 | Сообщение # 10
участник
Сейчас нет на сайте
Цитата rrrfer ()
Эти же функции можно дергать в линуксе, например.

Нет, не можно. Ядро не даст.
И в венде не даст.
Нигде не даст, если ядро нормальное.
Собственно, и в досе биос для таких штук не требовался - видеопамять начиналась по адресу 0xA000 и была доступна для записи и чтения. Биос только даёт набор полезных функций для работы с ней.
Цитата rrrfer ()
Покажите как без ассемблерных вставок, пожалуйста.

(char*)(0xa000) = <число>;


Как правильно задавать вопросы
RangerДата: Суббота, 15 Ноября 2014, 13:39 | Сообщение # 11
почти ветеран
Сейчас нет на сайте
Цитата rrrfer ()
но я думаю, что в windows доступ к биосу ограничен из соображений безопасности.

это я и имел в виду.

Цитата rrrfer ()
Покажите как без ассемблерных вставок, пожалуйста.

так примерно:

Код
void far *videoptr;
videoptr = 0xa000000;  
*videoptr = 0xff;

давно на C не писал. мог накосячить)))

переключить режим насколько помню можно было без прерываний в какой-то адрес передать параметр. уже не помню.


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг