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

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

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

Страницы: 13 4 5 618 Следующая »
#45
(Правка: 22:30) 22:26, 8 июня 2019

Сколько можно уже одно и тоже по сто тридцать пятому разу обсуждать, а? То от C++ свербит в одном месте, то от Си... Если так тянет в очередной раз срач устроить, то лучше делать это в отдельной теме (желательно во флейме).


Vlad2001_MFS
> И как теперь быть?
Взять да и попробовать :)

Vlad2001_MFS
> А в чем ты писал движок?
Visual Studio 2015 (винда) + CodeLite (линукс)
Плюс полезно иметь Dr.Memory (винда) или valgrind (линукс) для дебага всякого непотребства с памятью - ловить утечки и повреждения памяти - требуется в основном в начале когда что-то новое добавляешь и нужно убедиться что все в порядке.


#46
22:37, 8 июня 2019

mr.DIMAS
> Взять да и попробовать :)
Похоже и правда придется пробовать. Я уже представил себе этот кайф...
Проснусь утром, на велосипеде доеду до набережной, а там на скамеечке с видом на море и ноутбуком буду писать движок... Ляпота!)

Уже ставлю студию на ноут - надеюсь не будет виснуть
#47
22:53, 8 июня 2019

nes
> На одних Load_Texture, Load_Model, Load_... далеко не уедишь, обычно еще пишут
> всякие умные менеджеры ресурсов,
> которые мониторят время жизни ресурсов, загружают их целиком, либо частями в
> параллельных потоках.
Думаю это зависит от специфики игры, если игра "поуровневая" то не что не мешает данные для уровня загрузить сразу, потом все выгрузить, и загрузить новые для нового уровня. Даже если нужна подгрузка то это будет решаться средствами ОС и игровой логикой, когда и что надо.

> Без шаблонов, например, тебе придется либо писать море дублирующего кода, либо
> усложнять код,
Прекрасно пишется, даже перегрузка функций не потребовалась, но я пытаюсь в "игру", а не в "движок".
> добавляя сущностям дополнительную типовую метаинформацию.
> Самый простой пример - функции min и max.
> В крестах у тебя будет ровно две шаблонных реализации,
> на Сях же тебе придется либо писать макросы,
> тем самым делая код более уязвимым к ошибками,
> либо писать кучу повторяющегося кода.
вот этого мне хватате за глаза
#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
#define MAX(a, b)  (((a) > (b)) ? (a) : (b))

#48
23:03, 8 июня 2019

nes
> int a = ...
> int b = ...
> int c = MIN(a, b++);
высосано из пальца, тут явные проблемы с логикой у программиста.

#49
(Правка: 10:17) 10:17, 9 июня 2019

mr.DIMAS
А чего у тебя в mathlib.h постфиксы у типов разные? Везде стандартный _t, но de_vec2_s и de_vec3_s. Это что-то значит?

#50
(Правка: 10:23) 10:23, 9 июня 2019

Vlad2001_MFS
В си структуры сидят в своем пространстве имен, поэтому такое работать не будет

struct foo_t {
  int bar;
};

foo_t baz; // <- ошибка

Лечится это двумя путями

struct foo_t {
  int bar;
};

struct foo_t baz; // <- ок

либо

typedef struct foo_t {
  int bar;
} foo_t ;

foo_t baz; // <- ок

Так вот имена структур в разных пространствах имен могут быть разными, но это необязательно

typedef struct foo_s {
  int bar;
} foo_t ;

#51
(Правка: 10:51) 10:51, 9 июня 2019

mr.DIMAS
Ну ты меня конечно совсем за новичка держишь, я уже лет 5 в этой кухне варюсь)
Это я все прекрасно знаю, ты меня не правильно понял.
Есть тип de_mat3_t:

typedef struct de_mat3_t {
  float f[9];
} de_mat3_t;
Но в то же время есть и тип de_vec2_s:
typedef struct de_vec2_s {
  float x; /**< X coordinate of the vector */
  float y; /**< Y coordinate of the vector */
} de_vec2_t;

У матрицы постфикс _t, а у вектора _s. В чем здесь скрытый смысл? Я про постфиксы именно у типа, не у алиаса.

Может, конечно, я еще не проснулся и просто очень туплю.
#52
10:56, 9 июня 2019

Vlad2001_MFS
Никакого скрытого смысла нет, так получилось. Будет время - поправлю.

#53
10:58, 9 июня 2019

nes
Я понимаю, просто было интересно и все. Ответ я получил.

#54
11:12, 10 июня 2019

Какая гадость этот С, без STL жить грустно, всё обмазывается макросами :(

#55
11:45, 10 июня 2019

v1c
> Какая гадость этот С, без STL жить грустно, всё обмазывается макросами :(
Использовать C-макросы для решения крестопроблем не имеет смысла, т.к. у людей, знающих C, нет крестопроблем.

#56
12:14, 10 июня 2019

gudleifr
Тут и добавить нечего, хорошо сказано.

#57
14:01, 10 июня 2019

mr.DIMAS
Кстати, а разве не удобнее было бы вместо этого:

#define DE_ARRAY_DECLARE(Type, Name) \
  struct { \
    Type* data; \
    size_t size; \
    size_t _capacity; \
  } Name
сделать так:
#define DE_ARRAY_DECLARE(Type) \
  struct { \
    Type* data; \
    size_t size; \
    size_t _capacity; \
  }

То есть вместо

DE_ARRAY_DECLARE(int, a);
было бы
DE_ARRAY_DECLARE(int) a;

#58
16:02, 10 июня 2019

gudleifr
> Удобнее так:
>
> #define STRUCT(X) typedef struct X X; typedef X *p##X; struct X

Сплошные крестопроблемы, ужас

#59
20:54, 10 июня 2019

Vlad2001_MFS
> было бы
> DE_ARRAY_DECLARE(int) a;

Так вроде получше выглядит, да.

Страницы: 13 4 5 618 Следующая »
ПрограммированиеФорумОбщее