Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/20: Рейтинг темы: голосов - 20, средняя оценка - 4.85
36 / 36 / 0
Регистрация: 24.05.2009
Сообщений: 178

Понимание программирования графики

14.02.2013, 20:37. Показов 3840. Ответов 12

Студворк — интернет-сервис помощи студентам
Здравствуйте. Хочу попробовать запрограммировать какую-нибудь графику, но в интернетах преобладают руководства по использованию разных OpenGL/DirectX методов явно рисующих объекты. Допустим, я разрабатываю шашки. Двумерные. Можно, конечно, нарисовать поле и шашки каким-нибудь GDI/OpenGL, но это только в случае простых изображений. Потом понадобятся специальные люди, которые рисуют все модели, окружение и прочее, а программисты только переносят все это в игру, т.е. разрабатывают алгоритмы визуализации, которые работают на основе массивов вершин, граней моделей и прочей информации, но сами программисты не рисуют, т.е. явно не вызывают методы вроде, скажем, отрисовки круга для изображения головы.
Собственно, вопрос 1 - я правильно понимаю?
Если да, то я думаю имеет смысл сразу учиться работать с внешними источниками графических данных, а не рисовать кодом. Допустим, у меня есть файлы с изображением поля и файлы с изображениями шашек. Как мне корректно отображать шашки поверх поля? Ведь сам файл содержит квадрат, в центре которого нарисована круглая шашка, т.е. есть фон, который мне не нужен. Его обрезают? Делают прозрачным? Отображают этот квадрат в круглый фрейм на поле? Меняют цвет фона кодом?
Я слышал, даже двумерную графику проще рисовать трехмерной, это так? А как тогда делается графика во флеш-играх?
А с трехмерными моделями как работают? Допустим, у меня есть модель, скажем, из 3ds max. Как я могу использовать этот файл для отображения этой модели? Читал про побайтовый разбор файла, но, мне кажется, это какое-то извращение, формат файла ведь может поменяться. Неужели нет нормальных библиотек для этого? Это и есть часть функций игрового движка, да?
В общем, главный вопрос - не могли бы вы посоветовать какую-нибудь литературу в которой есть ответы на все это (с упором на объяснение работы с внешними источниками). При этом желательно программирование на C# .NET. Ну, или поясните что-нибудь сами, если не сложно.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.02.2013, 20:37
Ответы с готовыми решениями:

Понимание программирования
Сообственно говоря вот такая ситуация. Программированием занимаюсь 6 месяцев. Очень нравится.Прошел через тестирование на курсы по...

Понимание препроцессора в языке программирования
Здравствуйте, вот думаю над этими вопросами, а препод говорит обьяснить более подробно, чтобы даже ребенок понял(что за фанатизм?)....

О началах программирования графики
Всем привет! Предыстория Я решил научиться писать графические приложения. Для дружелюбного интерфейса и более зрелищного вывода, чем...

12
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
15.02.2013, 00:06
Цитата Сообщение от DartLenin Посмотреть сообщение
не могли бы вы посоветовать какую-нибудь литературу в которой есть ответы на все это
вот вам ответ Книги и ресурсы по Microsoft XNA
начните с видео уроков Ивана Андреева и всё станет ясно.
1
Эксперт Python
 Аватар для dondublon
4651 / 2071 / 366
Регистрация: 17.03.2012
Сообщений: 10,180
Записей в блоге: 6
15.02.2013, 07:29
Попробуйте WPF. Для шашек - самое то.
Для более серьезных игрушек рекомендую Unity3D.
0
142 / 16 / 2
Регистрация: 21.01.2013
Сообщений: 54
15.02.2013, 17:46
В XNA очень много упрощений - по сути это тот же DirectX, но только до невозможного упрощенный. Если выучить DirectX - то выучить XNA будет очень просто, но только не наоборот.
Помоему вы не с того начинаете. По вашему, художники рисуют текстуры, моделлеры - 3D модели, а программист тыкнул пару функций AddGoodModelka и всё, на этом его работа закончена??

Вообще графика тоже на чем то основана. Например 2D-графика - линии, кружочки, квадратики... это всё тоже сделано не просто, а на основе алгоритмов (например Брезенхема) - тока обычно они уже реализованы.
И в 3D-графике тоже ничего простого нет: Сцены, вершины, мэши, текстурные координаты, материалы, источники света, работа с матрицами вида, мира и проекции.


Начинайте с простого. Например, тот же вывод просто пустого окна, вывод одного треугольника. А то вы уж сразу про "про побайтовый разбор файла" начали говорить, даже примерно не представляя как вообще строиться 2D и 3D графика.

Читайте книги, гугл вам в помощь. Не стоит начинать знакомство с графикой с "импортеров 3D моделей"
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
15.02.2013, 22:43
Цитата Сообщение от RABBITSV Посмотреть сообщение
В XNA очень много упрощений - по сути это тот же DirectX, но только до невозможного упрощенный.
упрощенный не значит ущербный, всё необходимое присутствует http://msdn.microsoft.com/en-u... o.30).aspx

Цитата Сообщение от RABBITSV Посмотреть сообщение
Если выучить DirectX - то выучить XNA будет очень просто, но только не наоборот.
абсолютно не согласен. Изучать можно в любом порядке. Это как пресловутый домысел - типа выучил сначала C#, то C++ уже не судьба.
0
142 / 16 / 2
Регистрация: 21.01.2013
Сообщений: 54
15.02.2013, 22:53
В XNA - многие вещи, такие как загрузка моделей и других ресурсов, уже сделаны за программиста. Я согласен, что это довольно удобно - не нужно делать своих импортеров.
Но в целях образования лучше изучать процесс более детально, чтобы иметь представление, о том, как это делается на самом деле. Например, изучить математические основы графики - не слишком лишнее.

Поправка: это всё я написал для обучения Программиста, который действительно хочет разобраться в 3D-графике, а не для варианта "тупо написал программку, чтобы тупо пошевелить пару моделей в пространстве". Для этого есть всякие конструкторы игОр для чайников.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
16.02.2013, 02:46
RABBITSV,
В XNA - многие вещи, такие как загрузка моделей и других ресурсов, уже сделаны за программиста. Я согласен, что это довольно удобно - не нужно делать своих импортеров.
Но в целях образования лучше изучать процесс более детально, чтобы иметь представление, о том, как это делается на самом деле. Например, изучить математические основы графики - не слишком лишнее.

Поправка: это всё я написал для обучения Программиста, который действительно хочет разобраться в 3D-графике, а не для варианта "тупо написал программку, чтобы тупо пошевелить пару моделей в пространстве". Для этого есть всякие конструкторы игОр для чайников.
В языках высокого уровня - многие вещи, такие как задание модели памяти, сегментов стека и сегмента данных и других ресурсов, уже сделаны за программиста. Я согласен, что это довольно удобно - не нужно велосипедить свою реализацию.
Но в целях образования лучше изучать процесс более детально, чтобы иметь представление, о том, как это делается на самом деле. Например, изучить основы работы АЛУ - не слишком лишнее.

Поправка: это всё я написал для обучения Программиста, который действительно хочет разобраться в программировании, а не для варианта "тупо написал программку, чтобы тупо написать Hello world". Для этого есть всякие С++ и CLisp'ы.
1
142 / 16 / 2
Регистрация: 21.01.2013
Сообщений: 54
16.02.2013, 10:34
Спасибо за юмор Сколько людей - столько и мнений.
Но тема-то - "Понимание программирования графики", а я отвечал на Тему (а уж оформить её правильно - это задача ТС).
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
16.02.2013, 10:46
RABBITSV,
Просто бредово говорить, что если понял простое, то сложное не понять. Давайте будем не давать готовые формулы по геометрии, а просить школьников 6 класса посчитать двойной интеграл. А что, они же должны "иметь представление, о том, как это делается на самом деле". Все нужно делать последовательно, от простого - к сложному. Сразу начинать со сложного означает только отбить всякое желание этим заниматься. Хотя есть ограничения конечно, после того же бейсика на норм. язык перейти трудно
Цитата Сообщение от Э. В. Дейкстра
Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации.
Но это как раз-таки исключение, подтверждающее общее правило.
0
142 / 16 / 2
Регистрация: 21.01.2013
Сообщений: 54
16.02.2013, 11:05
Ну так я и сказал:
"Начинайте с простого. Например, тот же вывод просто пустого окна, вывод одного треугольника. А то вы уж сразу про "про побайтовый разбор файла" начали говорить, даже примерно не представляя как вообще строиться 2D и 3D графика."
В любом туториале (по DX, OpenGL) начинается с этого. Ну а чтобы просто передвинуть объект, крайне желательно знать, что такое матрицы.

Он просто захотел сразу импортировать модели, вообще не вдаваясь в подробности как она строится из полигонов. Ну да, загрузить и покрутить получится, а сделать что то более серьезное - фиг.

Тему нужно было назвать "Как сделать простые 2D/3D шашки", т.к. "Понимание программирования графики" звучит больше как углубленное изучение построения графики.

Добавлено через 13 минут
Ув. Psilon, вот именно то, что вы написала про Бейсик.
DirectX и OpenGL - они не сложнее XNA, на них точно так же можно писать простые программы. Они просто более детальны - в XNA просто многие моменты скрыты от программиста - вот, то что я хотел сказать.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
16.02.2013, 14:03
RABBITSV, в шарпе тоже многие детали скрыты, которые есть в С++, а в С++ есть скрытые детали, которые есть в С, а в С есть скрытые детали, которые есть в ASM... От простого к сложному - обычная практика. Вопрос в том, чтобы не привыкать к простоте, а это уже человеческий фактор.
0
16.02.2013, 14:21

Не по теме:

я уже пол дня пытаюсь заставить себя сделать сверточную нейронную сеть - вот уж действительно пример когда меня не интересует реализация, а хочется только результата :)

0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
16.02.2013, 14:33
RABBITSV,

Не по теме:

:D

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2013, 14:33
Помогаю со студенческими работами здесь

Программирования графики в с++ Метод Pixels
По методам визуальным программированием разработать программу построения в пикселях графического изображения функции y=pow(x,2)*sin(x) на...

Общие принципы программирования графики
Привет. Уже почти 2 месяца осваиваю программирование графики с использованием DirectX (планирую захватить также и OpenGL). С++ знаю...

Основы программирования графики в MS Windows
Кто разбирается в этом и может выполнить задание указанное ниже буду благодарна. Задание. Создать программу, обеспечивающую построение...

Ноутбук для программирования/игр/графики
Здравствуйте, уважаемые форумчане. Подскажите, пожалуйста, с выбором ноутбука Бюджет до 22 000. Пока остановился на трех ноутбуках: ...

Что поменять, для программирования и 3D графики?
Intel Core i5-3450 CPU 3.10GHz, 3100-3500 МГц, ядер: 4, логических процессоров: 4 RAM: 8,00 ГБ GeForce GTX 560 Что следует...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru