I have stuff like
public static class fGL
{
nothrow @nogc extern(System)
{
alias CullFace = void function(tGL.Enum);
alias FrontFace = void function(tGL.Enum);
alias HInt = void function(tGL.Enum, tGL.Enum);
alias LineWidth = void function(tGL.Float);
alias PoIntSize = void function(tGL.Float);
...
}
}
public static struct tGL
{
alias Void = void;
alias IntPtr = ptrdiff_t;
alias SizeInt = int;
alias Char = char;
alias CharARB = byte;
alias uShort = ushort;
alias Int64EXT = long;
alias Short = short;
alias uInt64 = ulong;
alias HalfARB = ushort;
alias BlendFunc = void function(tGL.Enum, tGL.Enum);
...
__gshared {
CopyTexImage1D glCopyTexImage1D;
TextureParameterf glTextureParameterf;
VertexAttribI3ui glVertexAttribI3ui;
VertexArrayElementBuffer glVertexArrayElementBuffer;
BlendFunc glBlendFunc;
...
}
public struct eGL
{
enum ubyte FALSE = 0;
enum ubyte TRUE = 1;
enum uint NO_ERROR = 0;
enum uint NONE = 0;
enum uint ZERO = 0;
enum uint ONE = 1;
...
}
And when I use this stuff(which is clearly openGL being cleaned
up a bit(I know I can use modules to essentially do this too but
that is irrelevant):
I get errors like
Error: null has no effect in expression (null)
Error: more than one argument for construction of extern
(Windows) void function(uint, uint) nothrow @nogc
This is when using it like
fGL.BlendFunc(eGL.SRC_ALPHA, eGL.ONE_MINUS_SRC_ALPHA);
What's going on? Please no responses about "You are going to run
into a lot of problems since all the openGL code uses the flat
accessing"... The whole point is to get away from that ancient
way and backwards way.