Войти
ПрограммированиеФорумОбщее

Движок на Си (15 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 114 15 16 17 18 Следующая »
#210
10:48, 28 июня 2019

u960
> Вроде похоже на то, что я хочу, а я хочу просто вызывать функции с разными
> параметрами.
> А можно где нить по подробнее прочитать? прежде чем я начну задавать глупые
> вопросы.
Хватит самых базовых знаний о том, что выдаёт компилятор на выхлопе и как происходит вызов функций.
Попробуй на godbolt повызывать функции с разными аргументами чтобы лучше понять.

=A=L=X=
> GCC
У этого оптимизатор кстати имеет моду сам делать fastcall там, где это можно(т.е раскладывать по регистрам), поэтому да, нужно быть осторожнее с этим. С другой стороны, автоматический OLE-подобный диспатчер тоже можно написать без особых усилий, экспортируя их с каким нибудь специальным префиксом. Тогда потери производительности вообще не будет, и сама функция сможет решать, как ей работать с аргументами.


#211
(Правка: 11:35) 11:34, 28 июня 2019

u960
> то есть, это не рабочий вариант, и это вы просто так накидали
Это Я накидал и прошу я тебя показать как ТЫ это видишь. Я веду к тому, что накидай прототип псевдокодом, а потом посмотри на него и подумай - как он будет развернут. Там на самом деле не много вариантов. И ты увидишь, что единственный возможный вариант передать все и сразу в одном месте, средствами языка, это задвинуть туда указатель как у меня в примере.

Если есть желание заменить собой линковщик, то можно распихать по регистрам или положить на стек упакованные аргументы руками. Тогда выйдет как ты хочешь. Других вариантов нет.

monobogdan
> и на x64
Это там где соглашение о вызове предусматривает, что первые N аргументов приезжают в регистрах, причем в разных для линукс и виндовс?

#212
12:57, 28 июня 2019

Daniil Petrov
> но за глаза хватило геморроя и с C++ ))
+1

#213
12:58, 28 июня 2019

mr.DIMAS
> Почти два года в свободное от работы время пишу движок на Си (C99 если точнее)

даже Кармак давно уже перешёл на C++ :)

#214
14:08, 28 июня 2019

mr.DIMAS

Молодец. Все круто, единственное кодстайл немного вырвиглазный - все наменования, кроме макросов в нижнем регистре, но это больше на любителя. Мне больше нравится кодстайл в quake :)

#215
16:02, 28 июня 2019

u960
> я хочу просто вызывать функции с разными параметрами
рекомендую начать с этого
exchg
> из диспетчера вызывать враппер из которого будешь дергать оригинальную функцию.
> Это не так красиво.

и раз тут уже упомянули скриптовые языки, можно заморочиться рефлекшном, т.е. добавлением метаинформации чтобы понимать сколько полей в структуре, какого размера, и возможно типа, оно тогда механически раскладывается на аргументы и обратно, но дело это не быстрое и довольно ёмкое, т.е. boilerplate приличный, в пределе как биндинги к скриптовым языкам

#216
17:57, 9 июля 2019

https://github.com/PJayB/Quake-III-Arena-D3D11
Так вот надо в С.

#217
21:08, 9 июля 2019

8xBit4
> Так вот надо в С
сам Кармак директ не жаловал, кто же знал что openGL так отстанет в производительности

#218
22:38, 9 июля 2019

8xBit4
Держи, ты потерял

++
#219
22:38, 9 июля 2019

#!
> кто же знал что openGL так отстанет в производительности

да ладно уж

#220
3:11, 10 июля 2019

Первый квейк мог работать через свой quakegl, урезанную и оптимизированную для нужд quake софтрендерную реализацию opengl. Примерно вдвое быстрее стандартной работала. Акселераторы то тогда были редкостью, большинство играло на компах без них, на софтовом рендере.

Вроде бы, во втором квейке эта возможность сохранялась, дальше - вряд ли, потребность отпала, абы какие акселераторы появились везде, даже на чисто офисной технике.

#221
14:53, 10 июля 2019

Zab
> урезанную и оптимизированную для нужд quake софтрендерную реализацию opengl.
> Примерно вдвое быстрее стандартной работала.
В смысле софтрендер, косящий под опенгл, работал вдвое быстрее штатного софтрендера? Или он работал вдвое быстрее опенгла на компах без видеокарт? И при этом всё равно выглядел как софтрендер, только урезанный (без пересвеченных текстур, например).

#222
20:30, 10 июля 2019

1 frag / 2 deaths
> В смысле софтрендер, косящий под опенгл, работал вдвое быстрее штатного софтрендера?
В смысле, своя айдишная реализация опенгл, из которой выкинуто все ненужное квейку, а оставшееся оптимизировано, работала вдвое быстрее стандартной.

#223
23:28, 11 июля 2019

Zab
А так можно? Разве Не-софтверные реализации могут писать кто то кроме создателец видеокарт? В смысле они ведь вроде в большинстве своем с закрытым исходным кодом и всякие новомодные штуки норды делать не могут?

#224
23:30, 11 июля 2019

Examnes
Тогда видеокарты были далеко не у всех. Это, насколько я знаю, была софтверная реализация OpenGL.

Страницы: 114 15 16 17 18 Следующая »
ПрограммированиеФорумОбщее