В GLSL вы можете получить доступ к компонентам вектора, используя как имена, так и индексы, например.если у вас есть vec2 foo
, то вы можете делать такие вещи, как foo.x
и foo[0]
.
Возможно ли воспроизвести этот интерфейс в C?
В настоящее время у меня есть следующее:
typedef union{
struct{ float x1, x2; };
struct{ float x, y; };
float d[2];
}vec2;
, который позволяет мне получить доступ к компонентам vec2 foo
, таким как foo.x
и foo.d[0]
.
Можно ли обойтись без этого неприятного .d
, прибывающего вfoo[0]
?(Каким-либо образом, возможно, используя какой-то (еще более противный) трюк с макросом?)