Перейти к содержимому


Фото

Скоро можно будет отказаться от Borland С++ 3.1


  • Чтобы отвечать, сперва войдите на форум
45 ответов в теме

#1 гык-sse2 Опубликовано 04 Сентябрь 2010 - 14:50

гык-sse2
  • Свои
  • 377 Сообщений:
  • Михаил Беляев
enum PTFillStyle	{SOLID_FILL, NONE};
enum PTColor		{BLACK, RED, GREEN, BLUE, YELLOW, GRAY, WHITE};

//Графические функции
void	initgraph		(int hsize, int vsize, bool fullscreen);	//Инициализация графики (несовместима с борландом!)
void	closegraph		();											//Завершение графики
void	setbkcolor		(PTColor color);							//Установка цвета фона
void	setcolor		(PTColor color);							//Установка цвета рисования
void	cleardevice		();											//Очистка экрана
void	putpixel		(float x1, float y1);						//Рисование точки
void	line			(float x1,float y1,float x2,float y2);		//Рисование линии
void	bar				(float x1,float y1,float x2,float y2);		//Рисование прямоугольника
void	fillpoly		(int n, float* array);						//Рисование многоугольника
void	outtext			(const char* string);						//Вывод текста в текущих координатах
void	outtextxy		(float x, float y, const char* string);		//Вывод текста в точке с заданными координатами
void	setfillstyle	(PTFillStyle newStyle, PTColor newColor);	//Установка стиля заполнения
void	fillellipse		(float x0, float y0, float r1, float r2);	//Рисование эллипса

//Текстовые функции
void	gotoxy			(float x, float y);							//Переход в точку
void	clrscr			();											//Очистка экрана и сброс текстовых координат
char	getch			();											//Чтение символа
int		puts			(const char* string);						//Вывод строки
char	getche			();											//Чтение символа с выводом на экран
int		putch			(char symbol);								//Вывод символа
int		bioskey			(int command);								//

//Эти функции не входят в стандарты, но это полезное дополнение, позволяющее использовать аппаратное ускорение для простых операций
void	PTPointArray		(float* array, int n);					//Рисование массива точек
void	PTLinedPointArray	(float* array, int n);					//Рисование массива точек, соединенных линиями
Кому не хватает каких-то функций, цветов или точного соответствия номеров цветов, скан-кодов и т. п., пишите.
bioskey в процессе разработки.
initgraph с параметром fullscreen=true не работает.

(это вынесено из оффтопа к теме "Проблемы с C++". Использованы GLUT и SDL.)

Изменено: iMichael, 04 Сентябрь 2010 - 14:52

Медведь громит каны!

#2 Дей-Лак Опубликовано 04 Сентябрь 2010 - 14:56

Дей-Лак
  • Свои
  • 596 Сообщений:
  • Николай Яковлев
А можно объяснить что это?
Опубликованное фото
Конституцию прочесть должен ты.

#3 гык-sse2 Опубликовано 04 Сентябрь 2010 - 14:58

гык-sse2
  • Свои
  • 377 Сообщений:
  • Михаил Беляев
Я пишу аналог graphics.h и всяких консольных библиотек, чтобы было максимально совместимо с BC-шными функциями, но работало на Visual Studio for Windows и XCode for Mac OS X, использовало большой экран и аппаратное ускорение графики (на OpenGL).

Этой библиотеки в очень недостроенном варианте (без всех псевдоконсольных и некоторых графических функций) было вполне достаточно для заставки "Машинки" для Mac (без настроек, все задано в коде). ща выложу последнюю версию машинок в соотв. тему

//Шторт, надо было наоборот сделать - а то тема про машинки поднялась, и с главной страницы виндывидны именно никому не нужные машинки.

Изменено: iMichael, 04 Сентябрь 2010 - 16:45

Медведь громит каны!

#4 Syrano Опубликовано 04 Сентябрь 2010 - 18:35

Syrano
  • Свои
  • 9 630 Сообщений:
  • Владимир Зайцев
^

С нами сила Алхазашвили!


#5 гык-sse2 Опубликовано 05 Сентябрь 2010 - 5:44

гык-sse2
  • Свои
  • 377 Сообщений:
  • Михаил Беляев
Под VS 2008 запустил (без глута, только SDL/OpenGL/GLU32). Соответственно, пока без функций вывода текста. getch работает, а вот initgraph не очень. Окно создается, но оно содержит в себе то, что было на экране под ним, его можно двигать, при этом изображение перемещается (т.е. окно не прозрачное). Может из-за того, что на виртуальной машине или из-за отсутствия аппаратного ускорения? В Mac OS X оно у меня программно рисуется. ЗЫ: специально для Насти планируется версия под Ubuntu.

Изменено: iMichael, 05 Сентябрь 2010 - 5:54

Медведь громит каны!

#6 Ripper Опубликовано 05 Сентябрь 2010 - 6:43

Ripper
  • Свои
  • 497 Сообщений:
  • Павел Рустанович
Закрась чем-нибудь фон

post-2756-0-28658900-1472313042.png


#7 гык-sse2 Опубликовано 05 Сентябрь 2010 - 7:58

гык-sse2
  • Свои
  • 377 Сообщений:
  • Михаил Беляев

Закрась чем-нибудь фон

initgraph вызывает cleardevice, который закрашивает фон черным.
Тем более прямоугольник не рисуется тоже.
А как в gcc указать, что надо компилировать совместно несколько файлов? (main.cpp и PaztalomTechnologiezGraphics.cpp)

Изменено: iMichael, 05 Сентябрь 2010 - 7:59

Медведь громит каны!

#8 Syrano Опубликовано 05 Сентябрь 2010 - 12:54

Syrano
  • Свои
  • 9 630 Сообщений:
  • Владимир Зайцев

А как в gcc указать, что надо компилировать совместно несколько файлов? (main.cpp и PaztalomTechnologiezGraphics.cpp)

>gcc PaztalomTechnologiezGraphics.cpp main.cpp
Он создаст PaztalomTechnologiezGraphics.o и main.o, а потом вызовет линковщик (ld) и соберет из них исполняемый модуль.

С нами сила Алхазашвили!


#9 KiberGus Опубликовано 05 Сентябрь 2010 - 13:08

KiberGus
  • Genius loci
  • 6 561 Сообщений:
  • Алексей Гусейнов

>gcc PaztalomTechnologiezGraphics.cpp main.cpp
Он создаст PaztalomTechnologiezGraphics.o и main.o, а потом вызовет линковщик (ld) и соберет из них исполняемый модуль.

Только gcc - это компилятор с С. А для С++ надо вызывать g++. Иначе могут полезть не слишком понятные ошибки.
Зато, обладая единственной в мире подводной орбитальной группировкой спутников глонасс...
gentoo.gif

#10 гык-sse2 Опубликовано 05 Сентябрь 2010 - 16:18

гык-sse2
  • Свои
  • 377 Сообщений:
  • Михаил Беляев

Только gcc - это компилятор с С. А для С++ надо вызывать g++. Иначе могут полезть не слишком понятные ошибки.

Точно, я и использую g++. Просто в терминале g++, а в уме все равно gcc. GNU Compiler Collection.
Медведь громит каны!

#11 гык-sse2 Опубликовано 06 Сентябрь 2010 - 12:49

гык-sse2
  • Свои
  • 377 Сообщений:
  • Михаил Беляев
В убунте квадратик уже рисуется, в отличие от винды. bioskey реализован для аргумента 0, для 1 нужно использовать PeepEvents и массив. оффтоп: Улисс не работает.

Изменено: iMichael, 06 Сентябрь 2010 - 15:39

Медведь громит каны!

#12 гык-sse2 Опубликовано 06 Сентябрь 2010 - 16:24

гык-sse2
  • Свои
  • 377 Сообщений:
  • Михаил Беляев
У этого теперь есть название - Consolation. Не занято? 1)CONSOLe emulATION, т.к. эмулирует консольные функции через графику 2)"Утешение", что старые программы могут работать в современных ОС 3)CONSOLidATION минус id, т.к. она объединяет основные используемые в 9 классе функции (пока не все), но не имеет никакого отношения к Objective-C, в котором id. Почти сделан ptprintf (сейчас не меняет координаты).

Изменено: iMichael, 06 Сентябрь 2010 - 17:46

Медведь громит каны!

#13 гык-sse2 Опубликовано 07 Сентябрь 2010 - 17:05

гык-sse2
  • Свои
  • 377 Сообщений:
  • Михаил Беляев
Под виндой проблема решена. Оказалось, забыл буфер сменить. Стоит ли вообще делать двойную буферизацию?

ЗЫ: если нет никакой задержки, то и с двойной жутко мигает, если внутри cleardevice стоит SDL_GL_SwapBuffers();

Сделаю наверно ф-цию refreshscreen(); которая вызывает SDL_GL_SwapBuffers (чтобы не подключать SDL.h к основному файлу - приводит к ошибке под VS 2k8), ну а расставлять их только там, где есть задержка - будет задача пользователя Consolation.h

ЗЫ2: блин, расползлась она по трем осям.
Mac OS X
		   ^
		   |
		   |
		   |_________>Windows
		   /
		  /
		 /
		/
 Linux|_
В обоих смыслах слова.

Изменено: iMichael, 07 Сентябрь 2010 - 17:25

Медведь громит каны!

#14 гык-sse2 Опубликовано 07 Сентябрь 2010 - 17:57

гык-sse2
  • Свои
  • 377 Сообщений:
  • Михаил Беляев
Итак, принтф работает. Сделал, чтобы все рефрешилось само в текстовых операциях, а в графических нужно refreshscreen(); использовать. Так как обычно это все в цикле, то написать это нужно только в одном месте.
Медведь громит каны!

#15 Syrano Опубликовано 07 Сентябрь 2010 - 17:59

Syrano
  • Свои
  • 9 630 Сообщений:
  • Владимир Зайцев

Сделаю наверно ф-цию refreshscreen(); которая вызывает SDL_GL_SwapBuffers (чтобы не подключать SDL.h к основному файлу - приводит к ошибке под VS 2k8), ну а расставлять их только там, где есть задержка - будет задача пользователя Consolation.h

ЗЫ2: блин, расползлась она по трем осям.

Mac OS X
		   ^
		   |
		   |
		   |_________>Windows
		   /
		  /
		 /
		/
 Linux|_
В обоих смыслах слова.

Миш, если хочешь, чтобы этим пользовались, то у пользователя не должно быть никаких забот кроме #include <...h> в начале кода.
Лучше несколько разных версий, Чем "задача пользователя" что-то там еще сделать.

Про "по трем осям" -- шикарно! :-)

С нами сила Алхазашвили!


#16 гык-sse2 Опубликовано 07 Сентябрь 2010 - 18:14

гык-sse2
  • Свои
  • 377 Сообщений:
  • Михаил Беляев

Миш, если хочешь, чтобы этим пользовались, то у пользователя не должно быть никаких забот кроме #include <...h> в начале кода.
Лучше несколько разных версий, Чем "задача пользователя" что-то там еще сделать.

Про "по трем осям" -- шикарно! :-)

Только она изменяется в каждой оси отдельно) уже не изменяется. Синхронизирую с маковым, т.к. там ничего не отключено временно для тестов.

Заботы гарантированы - нужно слинковать с SDL и GLUT, сам SDL положить на диск C или Z и в папку с программой, ...

Ладно, сделаю single-buffered, double-buffered auto и double-buffered advanced. (Ну, различаться будут двумя дефайнами).
Медведь громит каны!

#17 Syrano Опубликовано 07 Сентябрь 2010 - 18:24

Syrano
  • Свои
  • 9 630 Сообщений:
  • Владимир Зайцев

Только она изменяется в каждой оси отдельно) уже не изменяется. Синхронизирую с маковым, т.к. там ничего не отключено временно для тестов.

Заботы гарантированы - нужно слинковать с SDL и GLUT, сам SDL положить на диск C или Z и в папку с программой, ...

Ладно, сделаю single-buffered, double-buffered auto и double-buffered advanced. (Ну, различаться будут двумя дефайнами).

Просто хорошее дело делаешь. Жалко, если будет впустую. Ты представь себе народ, который только учится программировать, а ты им "собрать да слинковать..." Может, получится какой=нибудь инсталлятор написать? Чтобы собирал-раскладывал что куда надо и создавал пример проекта с простеньким примером? Чтобы можно было запустить что-нибудь, И сразу получить компиллируемый без переделок код?

С нами сила Алхазашвили!


#18 гык-sse2 Опубликовано 08 Сентябрь 2010 - 5:38

гык-sse2
  • Свои
  • 377 Сообщений:
  • Михаил Беляев
Вот именно о примере, который можно изменять, я думал. (Потому что сам писал на основе готового шаблона). А инсталлятор - наверно на .cmd будет проще сделать. Чтобы не требовал админских прав на запуск Windows Installer. Под линуксом - там есть какая-нибудь среда разработки на C++? А то g++-то компилирует в терминале, но неудобно вручную, а еще отладка... не в gdb же. Ну а библиотеки ставятся через sudo apt-get install Под виндой все работает, но нашел ошибки с цветами.

Изменено: iMichael, 08 Сентябрь 2010 - 7:29

Медведь громит каны!

#19 гык-sse2 Опубликовано 08 Сентябрь 2010 - 12:08

гык-sse2
  • Свои
  • 377 Сообщений:
  • Михаил Беляев
Реализовал еще одну функцию - bar3d. Ubuntu надо проверять на реальном железе, т.к. VMWare не поддерживает аппаратное ускорение в Linux.
Медведь громит каны!

#20 KiberGus Опубликовано 08 Сентябрь 2010 - 12:21

KiberGus
  • Genius loci
  • 6 561 Сообщений:
  • Алексей Гусейнов

Реализовал еще одну функцию - bar3d.
Ubuntu надо проверять на реальном железе, т.к. VMWare не поддерживает аппаратное ускорение в Linux.

Когда аппаратное ускорение не работает за дело берется софтверный рендерер из mesa3D. Тебе же OpenGL 3 не нужен?
Зато, обладая единственной в мире подводной орбитальной группировкой спутников глонасс...
gentoo.gif




1 пользователей читают эту тему

0 пользователей, 1 гостей, 0 невидимых