873
645
static void GLAPIENTRY
646
TAG(VertexAttribP1ui)(GLuint index, GLenum type, GLboolean normalized,
649
GET_CURRENT_CONTEXT(ctx);
650
ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP1ui");
651
ATTR_UI_INDEX(ctx, 1, type, normalized, index, value);
654
static void GLAPIENTRY
655
TAG(VertexAttribP2ui)(GLuint index, GLenum type, GLboolean normalized,
658
GET_CURRENT_CONTEXT(ctx);
659
ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP2ui");
660
ATTR_UI_INDEX(ctx, 2, type, normalized, index, value);
663
static void GLAPIENTRY
664
TAG(VertexAttribP3ui)(GLuint index, GLenum type, GLboolean normalized,
667
GET_CURRENT_CONTEXT(ctx);
668
ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP3ui");
669
ATTR_UI_INDEX(ctx, 3, type, normalized, index, value);
672
static void GLAPIENTRY
673
TAG(VertexAttribP4ui)(GLuint index, GLenum type, GLboolean normalized,
676
GET_CURRENT_CONTEXT(ctx);
677
ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexAttribP4ui");
678
ATTR_UI_INDEX(ctx, 4, type, normalized, index, value);
681
static void GLAPIENTRY
682
TAG(VertexAttribP1uiv)(GLuint index, GLenum type, GLboolean normalized,
685
GET_CURRENT_CONTEXT(ctx);
686
ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP1uiv");
687
ATTR_UI_INDEX(ctx, 1, type, normalized, index, *value);
690
static void GLAPIENTRY
691
TAG(VertexAttribP2uiv)(GLuint index, GLenum type, GLboolean normalized,
694
GET_CURRENT_CONTEXT(ctx);
695
ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP2uiv");
696
ATTR_UI_INDEX(ctx, 2, type, normalized, index, *value);
699
static void GLAPIENTRY
700
TAG(VertexAttribP3uiv)(GLuint index, GLenum type, GLboolean normalized,
703
GET_CURRENT_CONTEXT(ctx);
704
ERROR_IF_NOT_PACKED_TYPE_EXT(ctx, type, "glVertexAttribP3uiv");
705
ATTR_UI_INDEX(ctx, 3, type, normalized, index, *value);
708
static void GLAPIENTRY
709
TAG(VertexAttribP4uiv)(GLuint index, GLenum type, GLboolean normalized,
712
GET_CURRENT_CONTEXT(ctx);
713
ERROR_IF_NOT_PACKED_TYPE(ctx, type, "glVertexAttribP4uiv");
714
ATTR_UI_INDEX(ctx, 4, type, normalized, index, *value);
719
static void GLAPIENTRY
720
TAG(VertexAttribL1d)(GLuint index, GLdouble x)
722
GET_CURRENT_CONTEXT(ctx);
723
if (is_vertex_position(ctx, index))
725
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
726
ATTR1D(VBO_ATTRIB_GENERIC0 + index, x);
728
ERROR(GL_INVALID_VALUE);
731
static void GLAPIENTRY
732
TAG(VertexAttribL1dv)(GLuint index, const GLdouble * v)
734
GET_CURRENT_CONTEXT(ctx);
735
if (is_vertex_position(ctx, index))
737
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
738
ATTR1DV(VBO_ATTRIB_GENERIC0 + index, v);
740
ERROR(GL_INVALID_VALUE);
743
static void GLAPIENTRY
744
TAG(VertexAttribL2d)(GLuint index, GLdouble x, GLdouble y)
746
GET_CURRENT_CONTEXT(ctx);
747
if (is_vertex_position(ctx, index))
749
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
750
ATTR2D(VBO_ATTRIB_GENERIC0 + index, x, y);
752
ERROR(GL_INVALID_VALUE);
755
static void GLAPIENTRY
756
TAG(VertexAttribL2dv)(GLuint index, const GLdouble * v)
758
GET_CURRENT_CONTEXT(ctx);
759
if (is_vertex_position(ctx, index))
761
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
762
ATTR2DV(VBO_ATTRIB_GENERIC0 + index, v);
764
ERROR(GL_INVALID_VALUE);
767
static void GLAPIENTRY
768
TAG(VertexAttribL3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
770
GET_CURRENT_CONTEXT(ctx);
771
if (is_vertex_position(ctx, index))
773
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
774
ATTR3D(VBO_ATTRIB_GENERIC0 + index, x, y, z);
776
ERROR(GL_INVALID_VALUE);
779
static void GLAPIENTRY
780
TAG(VertexAttribL3dv)(GLuint index, const GLdouble * v)
782
GET_CURRENT_CONTEXT(ctx);
783
if (is_vertex_position(ctx, index))
785
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
786
ATTR3DV(VBO_ATTRIB_GENERIC0 + index, v);
788
ERROR(GL_INVALID_VALUE);
791
static void GLAPIENTRY
792
TAG(VertexAttribL4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
794
GET_CURRENT_CONTEXT(ctx);
795
if (is_vertex_position(ctx, index))
796
ATTR4D(0, x, y, z, w);
797
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
798
ATTR4D(VBO_ATTRIB_GENERIC0 + index, x, y, z, w);
800
ERROR(GL_INVALID_VALUE);
803
static void GLAPIENTRY
804
TAG(VertexAttribL4dv)(GLuint index, const GLdouble * v)
806
GET_CURRENT_CONTEXT(ctx);
807
if (is_vertex_position(ctx, index))
809
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
810
ATTR4DV(VBO_ATTRIB_GENERIC0 + index, v);
812
ERROR(GL_INVALID_VALUE);
815
static void GLAPIENTRY
816
TAG(VertexAttribL1ui64ARB)(GLuint index, GLuint64EXT x)
818
GET_CURRENT_CONTEXT(ctx);
819
if (is_vertex_position(ctx, index))
821
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
822
ATTR1UI64(VBO_ATTRIB_GENERIC0 + index, x);
824
ERROR(GL_INVALID_VALUE);
827
static void GLAPIENTRY
828
TAG(VertexAttribL1ui64vARB)(GLuint index, const GLuint64EXT *v)
830
GET_CURRENT_CONTEXT(ctx);
831
if (is_vertex_position(ctx, index))
833
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
834
ATTR1UIV64(VBO_ATTRIB_GENERIC0 + index, v);
836
ERROR(GL_INVALID_VALUE);
839
/* GL_NV_half_float */
840
static void GLAPIENTRY
841
TAG(Vertex2hNV)(GLhalfNV x, GLhalfNV y)
843
GET_CURRENT_CONTEXT(ctx);
844
ATTR2H(VBO_ATTRIB_POS, x, y);
847
static void GLAPIENTRY
848
TAG(Vertex2hvNV)(const GLhalfNV * v)
850
GET_CURRENT_CONTEXT(ctx);
851
ATTR2HV(VBO_ATTRIB_POS, v);
854
static void GLAPIENTRY
855
TAG(Vertex3hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z)
857
GET_CURRENT_CONTEXT(ctx);
858
ATTR3H(VBO_ATTRIB_POS, x, y, z);
861
static void GLAPIENTRY
862
TAG(Vertex3hvNV)(const GLhalfNV * v)
864
GET_CURRENT_CONTEXT(ctx);
865
ATTR3HV(VBO_ATTRIB_POS, v);
868
static void GLAPIENTRY
869
TAG(Vertex4hNV)(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)
871
GET_CURRENT_CONTEXT(ctx);
872
ATTR4H(VBO_ATTRIB_POS, x, y, z, w);
875
static void GLAPIENTRY
876
TAG(Vertex4hvNV)(const GLhalfNV * v)
878
GET_CURRENT_CONTEXT(ctx);
879
ATTR4HV(VBO_ATTRIB_POS, v);
882
static void GLAPIENTRY
883
TAG(VertexAttrib1hNV)(GLuint index, GLhalfNV x)
885
GET_CURRENT_CONTEXT(ctx);
886
if (is_vertex_position(ctx, index))
888
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
889
ATTR1H(VBO_ATTRIB_GENERIC0 + index, x);
891
ERROR(GL_INVALID_VALUE);
894
static void GLAPIENTRY
895
TAG(VertexAttrib2hNV)(GLuint index, GLhalfNV x, GLhalfNV y)
897
GET_CURRENT_CONTEXT(ctx);
898
if (is_vertex_position(ctx, index))
900
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
901
ATTR2H(VBO_ATTRIB_GENERIC0 + index, x, y);
903
ERROR(GL_INVALID_VALUE);
906
static void GLAPIENTRY
907
TAG(VertexAttrib3hNV)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z)
909
GET_CURRENT_CONTEXT(ctx);
910
if (is_vertex_position(ctx, index))
912
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
913
ATTR3H(VBO_ATTRIB_GENERIC0 + index, x, y, z);
915
ERROR(GL_INVALID_VALUE);
918
static void GLAPIENTRY
919
TAG(VertexAttrib4hNV)(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w)
921
GET_CURRENT_CONTEXT(ctx);
922
if (is_vertex_position(ctx, index))
923
ATTR4H(0, x, y, z, w);
924
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
925
ATTR4H(VBO_ATTRIB_GENERIC0 + index, x, y, z, w);
927
ERROR(GL_INVALID_VALUE);
930
static void GLAPIENTRY
931
TAG(VertexAttrib1hvNV)(GLuint index, const GLhalfNV * v)
933
GET_CURRENT_CONTEXT(ctx);
934
if (is_vertex_position(ctx, index))
936
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
937
ATTR1HV(VBO_ATTRIB_GENERIC0 + index, v);
939
ERROR(GL_INVALID_VALUE);
942
static void GLAPIENTRY
943
TAG(VertexAttrib2hvNV)(GLuint index, const GLhalfNV * v)
945
GET_CURRENT_CONTEXT(ctx);
946
if (is_vertex_position(ctx, index))
948
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
949
ATTR2HV(VBO_ATTRIB_GENERIC0 + index, v);
951
ERROR(GL_INVALID_VALUE);
954
static void GLAPIENTRY
955
TAG(VertexAttrib3hvNV)(GLuint index, const GLhalfNV * v)
957
GET_CURRENT_CONTEXT(ctx);
958
if (is_vertex_position(ctx, index))
960
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
961
ATTR3HV(VBO_ATTRIB_GENERIC0 + index, v);
963
ERROR(GL_INVALID_VALUE);
966
static void GLAPIENTRY
967
TAG(VertexAttrib4hvNV)(GLuint index, const GLhalfNV * v)
969
GET_CURRENT_CONTEXT(ctx);
970
if (is_vertex_position(ctx, index))
972
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
973
ATTR4HV(VBO_ATTRIB_GENERIC0 + index, v);
975
ERROR(GL_INVALID_VALUE);
978
static void GLAPIENTRY
979
TAG(VertexAttribs1hvNV)(GLuint index, GLsizei n, const GLhalfNV *v)
981
GET_CURRENT_CONTEXT(ctx);
982
n = MIN2(n, VBO_ATTRIB_MAX - index);
983
for (GLint i = n - 1; i >= 0; i--)
984
ATTR1H(index + i, v[i]);
987
static void GLAPIENTRY
988
TAG(VertexAttribs2hvNV)(GLuint index, GLsizei n, const GLhalfNV *v)
990
GET_CURRENT_CONTEXT(ctx);
991
n = MIN2(n, VBO_ATTRIB_MAX - index);
992
for (GLint i = n - 1; i >= 0; i--)
993
ATTR2H(index + i, v[2 * i], v[2 * i + 1]);
996
static void GLAPIENTRY
997
TAG(VertexAttribs3hvNV)(GLuint index, GLsizei n, const GLhalfNV *v)
999
GET_CURRENT_CONTEXT(ctx);
1000
n = MIN2(n, VBO_ATTRIB_MAX - index);
1001
for (GLint i = n - 1; i >= 0; i--)
1002
ATTR3H(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]);
1006
static void GLAPIENTRY
1007
TAG(VertexAttribs4hvNV)(GLuint index, GLsizei n, const GLhalfNV *v)
1009
GET_CURRENT_CONTEXT(ctx);
1010
n = MIN2(n, VBO_ATTRIB_MAX - index);
1011
for (GLint i = n - 1; i >= 0; i--)
1012
ATTR4H(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]);
1015
static void GLAPIENTRY
1016
TAG(Vertex2d)(GLdouble x, GLdouble y)
1018
GET_CURRENT_CONTEXT(ctx);
1019
ATTR2F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y);
1022
static void GLAPIENTRY
1023
TAG(Vertex2i)(GLint x, GLint y)
1025
GET_CURRENT_CONTEXT(ctx);
1026
ATTR2F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y);
1029
static void GLAPIENTRY
1030
TAG(Vertex2s)(GLshort x, GLshort y)
1032
GET_CURRENT_CONTEXT(ctx);
1033
ATTR2F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y);
1036
static void GLAPIENTRY
1037
TAG(Vertex3d)(GLdouble x, GLdouble y, GLdouble z)
1039
GET_CURRENT_CONTEXT(ctx);
1040
ATTR3F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1043
static void GLAPIENTRY
1044
TAG(Vertex3i)(GLint x, GLint y, GLint z)
1046
GET_CURRENT_CONTEXT(ctx);
1047
ATTR3F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1050
static void GLAPIENTRY
1051
TAG(Vertex3s)(GLshort x, GLshort y, GLshort z)
1053
GET_CURRENT_CONTEXT(ctx);
1054
ATTR3F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1057
static void GLAPIENTRY
1058
TAG(Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1060
GET_CURRENT_CONTEXT(ctx);
1061
ATTR4F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1064
static void GLAPIENTRY
1065
TAG(Vertex4i)(GLint x, GLint y, GLint z, GLint w)
1067
GET_CURRENT_CONTEXT(ctx);
1068
ATTR4F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1071
static void GLAPIENTRY
1072
TAG(Vertex4s)(GLshort x, GLshort y, GLshort z, GLshort w)
1074
GET_CURRENT_CONTEXT(ctx);
1075
ATTR4F(VBO_ATTRIB_POS, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1078
static void GLAPIENTRY
1079
TAG(Vertex2dv)(const GLdouble *v)
1081
GET_CURRENT_CONTEXT(ctx);
1082
ATTR2F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1]);
1085
static void GLAPIENTRY
1086
TAG(Vertex2iv)(const GLint *v)
1088
GET_CURRENT_CONTEXT(ctx);
1089
ATTR2F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1]);
1092
static void GLAPIENTRY
1093
TAG(Vertex2sv)(const GLshort *v)
1095
GET_CURRENT_CONTEXT(ctx);
1096
ATTR2F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1]);
1099
static void GLAPIENTRY
1100
TAG(Vertex3dv)(const GLdouble *v)
1102
GET_CURRENT_CONTEXT(ctx);
1103
ATTR3F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1106
static void GLAPIENTRY
1107
TAG(Vertex3iv)(const GLint *v)
1109
GET_CURRENT_CONTEXT(ctx);
1110
ATTR3F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1113
static void GLAPIENTRY
1114
TAG(Vertex3sv)(const GLshort *v)
1116
GET_CURRENT_CONTEXT(ctx);
1117
ATTR3F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1120
static void GLAPIENTRY
1121
TAG(Vertex4dv)(const GLdouble *v)
1123
GET_CURRENT_CONTEXT(ctx);
1124
ATTR4F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1],
1125
(GLfloat) v[2], (GLfloat) v[3]);
1128
static void GLAPIENTRY
1129
TAG(Vertex4iv)(const GLint *v)
1131
GET_CURRENT_CONTEXT(ctx);
1132
ATTR4F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1],
1133
(GLfloat) v[2], (GLfloat) v[3]);
1136
static void GLAPIENTRY
1137
TAG(Vertex4sv)(const GLshort *v)
1139
GET_CURRENT_CONTEXT(ctx);
1140
ATTR4F(VBO_ATTRIB_POS, (GLfloat) v[0], (GLfloat) v[1],
1141
(GLfloat) v[2], (GLfloat) v[3]);
1145
* GL_NV_vertex_program:
1146
* Note that attribute indexes DO alias conventional vertex attributes.
1149
static void GLAPIENTRY
1150
TAG(VertexAttrib1sNV)(GLuint index, GLshort x)
1152
GET_CURRENT_CONTEXT(ctx);
1153
if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) x);
1156
static void GLAPIENTRY
1157
TAG(VertexAttrib1dNV)(GLuint index, GLdouble x)
1159
GET_CURRENT_CONTEXT(ctx);
1160
if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) x);
1163
static void GLAPIENTRY
1164
TAG(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y)
1166
GET_CURRENT_CONTEXT(ctx);
1167
if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) x, y);
1170
static void GLAPIENTRY
1171
TAG(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y)
1173
GET_CURRENT_CONTEXT(ctx);
1174
if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) x, (GLfloat) y);
1177
static void GLAPIENTRY
1178
TAG(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z)
1180
GET_CURRENT_CONTEXT(ctx);
1181
if (index < VBO_ATTRIB_MAX) ATTR3F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1184
static void GLAPIENTRY
1185
TAG(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1187
GET_CURRENT_CONTEXT(ctx);
1188
if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
1191
static void GLAPIENTRY
1192
TAG(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1194
GET_CURRENT_CONTEXT(ctx);
1195
if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1198
static void GLAPIENTRY
1199
TAG(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1201
GET_CURRENT_CONTEXT(ctx);
1202
if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1205
static void GLAPIENTRY
1206
TAG(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1208
GET_CURRENT_CONTEXT(ctx);
1209
if (index < VBO_ATTRIB_MAX) ATTR4F(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
1210
UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1213
static void GLAPIENTRY
1214
TAG(VertexAttrib1svNV)(GLuint index, const GLshort *v)
1216
GET_CURRENT_CONTEXT(ctx);
1217
if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) v[0]);
1220
static void GLAPIENTRY
1221
TAG(VertexAttrib1dvNV)(GLuint index, const GLdouble *v)
1223
GET_CURRENT_CONTEXT(ctx);
1224
if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) v[0]);
1227
static void GLAPIENTRY
1228
TAG(VertexAttrib2svNV)(GLuint index, const GLshort *v)
1230
GET_CURRENT_CONTEXT(ctx);
1231
if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) v[0], (GLfloat) v[1]);
1234
static void GLAPIENTRY
1235
TAG(VertexAttrib2dvNV)(GLuint index, const GLdouble *v)
1237
GET_CURRENT_CONTEXT(ctx);
1238
if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) v[0], (GLfloat) v[1]);
1241
static void GLAPIENTRY
1242
TAG(VertexAttrib3svNV)(GLuint index, const GLshort *v)
1244
GET_CURRENT_CONTEXT(ctx);
1245
if (index < VBO_ATTRIB_MAX) ATTR3F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1248
static void GLAPIENTRY
1249
TAG(VertexAttrib3dvNV)(GLuint index, const GLdouble *v)
1251
GET_CURRENT_CONTEXT(ctx);
1252
if (index < VBO_ATTRIB_MAX) ATTR3F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1255
static void GLAPIENTRY
1256
TAG(VertexAttrib4svNV)(GLuint index, const GLshort *v)
1258
GET_CURRENT_CONTEXT(ctx);
1259
if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2],
1263
static void GLAPIENTRY
1264
TAG(VertexAttrib4dvNV)(GLuint index, const GLdouble *v)
1266
GET_CURRENT_CONTEXT(ctx);
1267
if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
1270
static void GLAPIENTRY
1271
TAG(VertexAttrib4ubvNV)(GLuint index, const GLubyte *v)
1273
GET_CURRENT_CONTEXT(ctx);
1274
if (index < VBO_ATTRIB_MAX) ATTR4F(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
1275
UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1279
static void GLAPIENTRY
1280
TAG(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort *v)
1282
GET_CURRENT_CONTEXT(ctx);
1284
n = MIN2(n, VBO_ATTRIB_MAX - index);
1285
for (i = n - 1; i >= 0; i--)
1286
ATTR1F(index + i, (GLfloat) v[i]);
1289
static void GLAPIENTRY
1290
TAG(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat *v)
1292
GET_CURRENT_CONTEXT(ctx);
1294
n = MIN2(n, VBO_ATTRIB_MAX - index);
1295
for (i = n - 1; i >= 0; i--)
1296
ATTR1F(index + i, v[i]);
1299
static void GLAPIENTRY
1300
TAG(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble *v)
1302
GET_CURRENT_CONTEXT(ctx);
1304
n = MIN2(n, VBO_ATTRIB_MAX - index);
1305
for (i = n - 1; i >= 0; i--)
1306
ATTR1F(index + i, (GLfloat) v[i]);
1309
static void GLAPIENTRY
1310
TAG(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort *v)
1312
GET_CURRENT_CONTEXT(ctx);
1314
n = MIN2(n, VBO_ATTRIB_MAX - index);
1315
for (i = n - 1; i >= 0; i--)
1316
ATTR2F(index + i, (GLfloat) v[2 * i], (GLfloat) v[2 * i + 1]);
1319
static void GLAPIENTRY
1320
TAG(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat *v)
1322
GET_CURRENT_CONTEXT(ctx);
1324
n = MIN2(n, VBO_ATTRIB_MAX - index);
1325
for (i = n - 1; i >= 0; i--)
1326
ATTR2F(index + i, v[2 * i], v[2 * i + 1]);
1329
static void GLAPIENTRY
1330
TAG(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble *v)
1332
GET_CURRENT_CONTEXT(ctx);
1334
n = MIN2(n, VBO_ATTRIB_MAX - index);
1335
for (i = n - 1; i >= 0; i--)
1336
ATTR2F(index + i, (GLfloat) v[2 * i], (GLfloat) v[2 * i + 1]);
1339
static void GLAPIENTRY
1340
TAG(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort *v)
1342
GET_CURRENT_CONTEXT(ctx);
1344
n = MIN2(n, VBO_ATTRIB_MAX - index);
1345
for (i = n - 1; i >= 0; i--)
1346
ATTR3F(index + i, (GLfloat) v[3 * i], (GLfloat) v[3 * i + 1], (GLfloat) v[3 * i + 2]);
1349
static void GLAPIENTRY
1350
TAG(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat *v)
1352
GET_CURRENT_CONTEXT(ctx);
1354
n = MIN2(n, VBO_ATTRIB_MAX - index);
1355
for (i = n - 1; i >= 0; i--)
1356
ATTR3F(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]);
1359
static void GLAPIENTRY
1360
TAG(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble *v)
1362
GET_CURRENT_CONTEXT(ctx);
1364
n = MIN2(n, VBO_ATTRIB_MAX - index);
1365
for (i = n - 1; i >= 0; i--)
1366
ATTR3F(index + i, (GLfloat) v[3 * i], (GLfloat) v[3 * i + 1], (GLfloat) v[3 * i + 2]);
1369
static void GLAPIENTRY
1370
TAG(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort *v)
1372
GET_CURRENT_CONTEXT(ctx);
1374
n = MIN2(n, VBO_ATTRIB_MAX - index);
1375
for (i = n - 1; i >= 0; i--)
1376
ATTR4F(index + i, (GLfloat) v[4 * i], (GLfloat) v[4 * i + 1], (GLfloat) v[4 * i + 2], (GLfloat) v[4 * i + 3]);
1379
static void GLAPIENTRY
1380
TAG(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat *v)
1382
GET_CURRENT_CONTEXT(ctx);
1384
n = MIN2(n, VBO_ATTRIB_MAX - index);
1385
for (i = n - 1; i >= 0; i--)
1386
ATTR4F(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]);
1389
static void GLAPIENTRY
1390
TAG(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble *v)
1392
GET_CURRENT_CONTEXT(ctx);
1394
n = MIN2(n, VBO_ATTRIB_MAX - index);
1395
for (i = n - 1; i >= 0; i--)
1396
ATTR4F(index + i, (GLfloat) v[4 * i], (GLfloat) v[4 * i + 1], (GLfloat) v[4 * i + 2], (GLfloat) v[4 * i + 3]);
1399
static void GLAPIENTRY
1400
TAG(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte *v)
1402
GET_CURRENT_CONTEXT(ctx);
1404
n = MIN2(n, VBO_ATTRIB_MAX - index);
1405
for (i = n - 1; i >= 0; i--)
1406
ATTR4F(index + i, UBYTE_TO_FLOAT(v[4 * i]), UBYTE_TO_FLOAT(v[4 * i + 1]),
1407
UBYTE_TO_FLOAT(v[4 * i + 2]), UBYTE_TO_FLOAT(v[4 * i + 3]));
1412
* GL_ARB_vertex_program
1413
* Note that attribute indexes do NOT alias conventional attributes.
1416
static void GLAPIENTRY
1417
TAG(VertexAttrib1s)(GLuint index, GLshort x)
1419
GET_CURRENT_CONTEXT(ctx);
1420
if (is_vertex_position(ctx, index))
1421
ATTR1F(0, (GLfloat) x);
1422
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1423
ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x);
1425
ERROR(GL_INVALID_VALUE);
1428
static void GLAPIENTRY
1429
TAG(VertexAttrib1d)(GLuint index, GLdouble x)
1431
GET_CURRENT_CONTEXT(ctx);
1432
if (is_vertex_position(ctx, index))
1433
ATTR1F(0, (GLfloat) x);
1434
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1435
ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x);
1437
ERROR(GL_INVALID_VALUE);
1440
static void GLAPIENTRY
1441
TAG(VertexAttrib2s)(GLuint index, GLshort x, GLshort y)
1443
GET_CURRENT_CONTEXT(ctx);
1444
if (is_vertex_position(ctx, index))
1445
ATTR2F(0, (GLfloat) x, (GLfloat) y);
1446
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1447
ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y);
1449
ERROR(GL_INVALID_VALUE);
1452
static void GLAPIENTRY
1453
TAG(VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y)
1455
GET_CURRENT_CONTEXT(ctx);
1456
if (is_vertex_position(ctx, index))
1457
ATTR2F(0, (GLfloat) x, (GLfloat) y);
1458
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1459
ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y);
1461
ERROR(GL_INVALID_VALUE);
1464
static void GLAPIENTRY
1465
TAG(VertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z)
1467
GET_CURRENT_CONTEXT(ctx);
1468
if (is_vertex_position(ctx, index))
1469
ATTR3F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1470
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1471
ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1473
ERROR(GL_INVALID_VALUE);
1476
static void GLAPIENTRY
1477
TAG(VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
1479
GET_CURRENT_CONTEXT(ctx);
1480
if (is_vertex_position(ctx, index))
1481
ATTR3F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1482
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1483
ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
1485
ERROR(GL_INVALID_VALUE);
1488
static void GLAPIENTRY
1489
TAG(VertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1491
GET_CURRENT_CONTEXT(ctx);
1492
if (is_vertex_position(ctx, index))
1493
ATTR4F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1494
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1495
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1497
ERROR(GL_INVALID_VALUE);
1500
static void GLAPIENTRY
1501
TAG(VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1503
GET_CURRENT_CONTEXT(ctx);
1504
if (is_vertex_position(ctx, index))
1505
ATTR4F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1506
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1507
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
1509
ERROR(GL_INVALID_VALUE);
1512
static void GLAPIENTRY
1513
TAG(VertexAttrib1sv)(GLuint index, const GLshort *v)
1515
GET_CURRENT_CONTEXT(ctx);
1516
if (is_vertex_position(ctx, index))
1517
ATTR1F(0, (GLfloat) v[0]);
1518
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1519
ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0]);
1521
ERROR(GL_INVALID_VALUE);
1524
static void GLAPIENTRY
1525
TAG(VertexAttrib1dv)(GLuint index, const GLdouble *v)
1527
GET_CURRENT_CONTEXT(ctx);
1528
if (is_vertex_position(ctx, index))
1529
ATTR1F(0, (GLfloat) v[0]);
1530
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1531
ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0]);
1533
ERROR(GL_INVALID_VALUE);
1536
static void GLAPIENTRY
1537
TAG(VertexAttrib2sv)(GLuint index, const GLshort *v)
1539
GET_CURRENT_CONTEXT(ctx);
1540
if (is_vertex_position(ctx, index))
1541
ATTR2F(0, (GLfloat) v[0], (GLfloat) v[1]);
1542
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1543
ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1]);
1545
ERROR(GL_INVALID_VALUE);
1548
static void GLAPIENTRY
1549
TAG(VertexAttrib2dv)(GLuint index, const GLdouble *v)
1551
GET_CURRENT_CONTEXT(ctx);
1552
if (is_vertex_position(ctx, index))
1553
ATTR2F(0, (GLfloat) v[0], (GLfloat) v[1]);
1554
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1555
ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1]);
1557
ERROR(GL_INVALID_VALUE);
1560
static void GLAPIENTRY
1561
TAG(VertexAttrib3sv)(GLuint index, const GLshort *v)
1563
GET_CURRENT_CONTEXT(ctx);
1564
if (is_vertex_position(ctx, index))
1565
ATTR3F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1566
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1567
ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1569
ERROR(GL_INVALID_VALUE);
1572
static void GLAPIENTRY
1573
TAG(VertexAttrib3dv)(GLuint index, const GLdouble *v)
1575
GET_CURRENT_CONTEXT(ctx);
1576
if (is_vertex_position(ctx, index))
1577
ATTR3F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1578
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1579
ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
1581
ERROR(GL_INVALID_VALUE);
1584
static void GLAPIENTRY
1585
TAG(VertexAttrib4sv)(GLuint index, const GLshort *v)
1587
GET_CURRENT_CONTEXT(ctx);
1588
if (is_vertex_position(ctx, index))
1589
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1590
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1591
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1593
ERROR(GL_INVALID_VALUE);
1596
static void GLAPIENTRY
1597
TAG(VertexAttrib4dv)(GLuint index, const GLdouble *v)
1599
GET_CURRENT_CONTEXT(ctx);
1600
if (is_vertex_position(ctx, index))
1601
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1602
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1603
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1605
ERROR(GL_INVALID_VALUE);
1608
static void GLAPIENTRY
1609
TAG(VertexAttrib4bv)(GLuint index, const GLbyte * v)
1611
GET_CURRENT_CONTEXT(ctx);
1612
if (is_vertex_position(ctx, index))
1613
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1614
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1615
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1617
ERROR(GL_INVALID_VALUE);
1620
static void GLAPIENTRY
1621
TAG(VertexAttrib4iv)(GLuint index, const GLint * v)
1623
GET_CURRENT_CONTEXT(ctx);
1624
if (is_vertex_position(ctx, index))
1625
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1626
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1627
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1629
ERROR(GL_INVALID_VALUE);
1632
static void GLAPIENTRY
1633
TAG(VertexAttrib4ubv)(GLuint index, const GLubyte * v)
1635
GET_CURRENT_CONTEXT(ctx);
1636
if (is_vertex_position(ctx, index))
1637
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1638
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1639
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1641
ERROR(GL_INVALID_VALUE);
1644
static void GLAPIENTRY
1645
TAG(VertexAttrib4usv)(GLuint index, const GLushort * v)
1647
GET_CURRENT_CONTEXT(ctx);
1648
if (is_vertex_position(ctx, index))
1649
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1650
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1651
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1653
ERROR(GL_INVALID_VALUE);
1656
static void GLAPIENTRY
1657
TAG(VertexAttrib4uiv)(GLuint index, const GLuint * v)
1659
GET_CURRENT_CONTEXT(ctx);
1660
if (is_vertex_position(ctx, index))
1661
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1662
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1663
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
1665
ERROR(GL_INVALID_VALUE);
1668
static void GLAPIENTRY
1669
TAG(VertexAttrib4Nbv)(GLuint index, const GLbyte * v)
1671
GET_CURRENT_CONTEXT(ctx);
1672
if (is_vertex_position(ctx, index))
1673
ATTR4F(0, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]));
1674
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1675
ATTR4F(VBO_ATTRIB_GENERIC0 + index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]));
1677
ERROR(GL_INVALID_VALUE);
1680
static void GLAPIENTRY
1681
TAG(VertexAttrib4Nsv)(GLuint index, const GLshort * v)
1683
GET_CURRENT_CONTEXT(ctx);
1684
if (is_vertex_position(ctx, index))
1685
ATTR4F(0, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]));
1686
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1687
ATTR4F(VBO_ATTRIB_GENERIC0 + index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]));
1689
ERROR(GL_INVALID_VALUE);
1692
static void GLAPIENTRY
1693
TAG(VertexAttrib4Niv)(GLuint index, const GLint * v)
1695
GET_CURRENT_CONTEXT(ctx);
1696
if (is_vertex_position(ctx, index))
1697
ATTR4F(0, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]));
1698
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1699
ATTR4F(VBO_ATTRIB_GENERIC0 + index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]));
1701
ERROR(GL_INVALID_VALUE);
1704
static void GLAPIENTRY
1705
TAG(VertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1707
GET_CURRENT_CONTEXT(ctx);
1708
if (is_vertex_position(ctx, index))
1709
ATTR4F(0, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y), UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1710
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1711
ATTR4F(VBO_ATTRIB_GENERIC0 + index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y), UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
1713
ERROR(GL_INVALID_VALUE);
1716
static void GLAPIENTRY
1717
TAG(VertexAttrib4Nubv)(GLuint index, const GLubyte * v)
1719
GET_CURRENT_CONTEXT(ctx);
1720
if (is_vertex_position(ctx, index))
1721
ATTR4F(0, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1722
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1723
ATTR4F(VBO_ATTRIB_GENERIC0 + index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
1725
ERROR(GL_INVALID_VALUE);
1728
static void GLAPIENTRY
1729
TAG(VertexAttrib4Nusv)(GLuint index, const GLushort * v)
1731
GET_CURRENT_CONTEXT(ctx);
1732
if (is_vertex_position(ctx, index))
1733
ATTR4F(0, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]));
1734
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1735
ATTR4F(VBO_ATTRIB_GENERIC0 + index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]));
1737
ERROR(GL_INVALID_VALUE);
1740
static void GLAPIENTRY
1741
TAG(VertexAttrib4Nuiv)(GLuint index, const GLuint * v)
1743
GET_CURRENT_CONTEXT(ctx);
1744
if (is_vertex_position(ctx, index))
1745
ATTR4F(0, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]));
1746
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1747
ATTR4F(VBO_ATTRIB_GENERIC0 + index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]));
1749
ERROR(GL_INVALID_VALUE);
1753
* GL_EXT_gpu_shader / GL 3.0 signed/unsigned integer-valued attributes.
1754
* Note that attribute indexes do NOT alias conventional attributes.
1757
static void GLAPIENTRY
1758
TAG(VertexAttribI1iv)(GLuint index, const GLint *v)
1760
GET_CURRENT_CONTEXT(ctx);
1761
if (is_vertex_position(ctx, index))
1763
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1764
ATTR1I(VBO_ATTRIB_GENERIC0 + index, v[0]);
1766
ERROR(GL_INVALID_VALUE);
1769
static void GLAPIENTRY
1770
TAG(VertexAttribI1uiv)(GLuint index, const GLuint *v)
1772
GET_CURRENT_CONTEXT(ctx);
1773
if (is_vertex_position(ctx, index))
1775
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1776
ATTR1UI(VBO_ATTRIB_GENERIC0 + index, v[0]);
1778
ERROR(GL_INVALID_VALUE);
1781
static void GLAPIENTRY
1782
TAG(VertexAttribI4bv)(GLuint index, const GLbyte *v)
1784
GET_CURRENT_CONTEXT(ctx);
1785
if (is_vertex_position(ctx, index))
1786
ATTR4I(0, v[0], v[1], v[2], v[3]);
1787
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1788
ATTR4I(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]);
1790
ERROR(GL_INVALID_VALUE);
1793
static void GLAPIENTRY
1794
TAG(VertexAttribI4sv)(GLuint index, const GLshort *v)
1796
GET_CURRENT_CONTEXT(ctx);
1797
if (is_vertex_position(ctx, index))
1798
ATTR4I(0, v[0], v[1], v[2], v[3]);
1799
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1800
ATTR4I(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]);
1802
ERROR(GL_INVALID_VALUE);
1805
static void GLAPIENTRY
1806
TAG(VertexAttribI4ubv)(GLuint index, const GLubyte *v)
1808
GET_CURRENT_CONTEXT(ctx);
1809
if (is_vertex_position(ctx, index))
1810
ATTR4UI(0, v[0], v[1], v[2], v[3]);
1811
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1812
ATTR4UI(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]);
1814
ERROR(GL_INVALID_VALUE);
1817
static void GLAPIENTRY
1818
TAG(VertexAttribI4usv)(GLuint index, const GLushort *v)
1820
GET_CURRENT_CONTEXT(ctx);
1821
if (is_vertex_position(ctx, index))
1822
ATTR4UI(0, v[0], v[1], v[2], v[3]);
1823
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
1824
ATTR4UI(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]);
1826
ERROR(GL_INVALID_VALUE);
1829
/* define this macro to exclude folllowing none-vertex functions */
1830
#ifndef HW_SELECT_MODE
1832
static void GLAPIENTRY
1833
TAG(TexCoord1f)(GLfloat x)
1835
GET_CURRENT_CONTEXT(ctx);
1836
ATTR1F(VBO_ATTRIB_TEX0, x);
1839
static void GLAPIENTRY
1840
TAG(TexCoord1fv)(const GLfloat * v)
1842
GET_CURRENT_CONTEXT(ctx);
1843
ATTR1FV(VBO_ATTRIB_TEX0, v);
1846
static void GLAPIENTRY
1847
TAG(TexCoord2f)(GLfloat x, GLfloat y)
1849
GET_CURRENT_CONTEXT(ctx);
1850
ATTR2F(VBO_ATTRIB_TEX0, x, y);
1853
static void GLAPIENTRY
1854
TAG(TexCoord2fv)(const GLfloat * v)
1856
GET_CURRENT_CONTEXT(ctx);
1857
ATTR2FV(VBO_ATTRIB_TEX0, v);
1860
static void GLAPIENTRY
1861
TAG(TexCoord3f)(GLfloat x, GLfloat y, GLfloat z)
1863
GET_CURRENT_CONTEXT(ctx);
1864
ATTR3F(VBO_ATTRIB_TEX0, x, y, z);
1867
static void GLAPIENTRY
1868
TAG(TexCoord3fv)(const GLfloat * v)
1870
GET_CURRENT_CONTEXT(ctx);
1871
ATTR3FV(VBO_ATTRIB_TEX0, v);
1874
static void GLAPIENTRY
1875
TAG(TexCoord4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
1877
GET_CURRENT_CONTEXT(ctx);
1878
ATTR4F(VBO_ATTRIB_TEX0, x, y, z, w);
1881
static void GLAPIENTRY
1882
TAG(TexCoord4fv)(const GLfloat * v)
1884
GET_CURRENT_CONTEXT(ctx);
1885
ATTR4FV(VBO_ATTRIB_TEX0, v);
1890
static void GLAPIENTRY
1891
TAG(Normal3f)(GLfloat x, GLfloat y, GLfloat z)
1893
GET_CURRENT_CONTEXT(ctx);
1894
ATTR3F(VBO_ATTRIB_NORMAL, x, y, z);
1897
static void GLAPIENTRY
1898
TAG(Normal3fv)(const GLfloat * v)
1900
GET_CURRENT_CONTEXT(ctx);
1901
ATTR3FV(VBO_ATTRIB_NORMAL, v);
1906
static void GLAPIENTRY
1907
TAG(FogCoordfEXT)(GLfloat x)
1909
GET_CURRENT_CONTEXT(ctx);
1910
ATTR1F(VBO_ATTRIB_FOG, x);
1915
static void GLAPIENTRY
1916
TAG(FogCoordfvEXT)(const GLfloat * v)
1918
GET_CURRENT_CONTEXT(ctx);
1919
ATTR1FV(VBO_ATTRIB_FOG, v);
1922
static void GLAPIENTRY
1923
TAG(Color3f)(GLfloat x, GLfloat y, GLfloat z)
1925
GET_CURRENT_CONTEXT(ctx);
1926
ATTR3F(VBO_ATTRIB_COLOR0, x, y, z);
1929
static void GLAPIENTRY
1930
TAG(Color3fv)(const GLfloat * v)
1932
GET_CURRENT_CONTEXT(ctx);
1933
ATTR3FV(VBO_ATTRIB_COLOR0, v);
1936
static void GLAPIENTRY
1937
TAG(Color4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
1939
GET_CURRENT_CONTEXT(ctx);
1940
ATTR4F(VBO_ATTRIB_COLOR0, x, y, z, w);
1943
static void GLAPIENTRY
1944
TAG(Color4fv)(const GLfloat * v)
1946
GET_CURRENT_CONTEXT(ctx);
1947
ATTR4FV(VBO_ATTRIB_COLOR0, v);
1952
static void GLAPIENTRY
1953
TAG(SecondaryColor3fEXT)(GLfloat x, GLfloat y, GLfloat z)
1955
GET_CURRENT_CONTEXT(ctx);
1956
ATTR3F(VBO_ATTRIB_COLOR1, x, y, z);
1959
static void GLAPIENTRY
1960
TAG(SecondaryColor3fvEXT)(const GLfloat * v)
1962
GET_CURRENT_CONTEXT(ctx);
1963
ATTR3FV(VBO_ATTRIB_COLOR1, v);
1968
static void GLAPIENTRY
1969
TAG(EdgeFlag)(GLboolean b)
1971
GET_CURRENT_CONTEXT(ctx);
1972
ATTR1F(VBO_ATTRIB_EDGEFLAG, (GLfloat) b);
1977
static void GLAPIENTRY
1978
TAG(Indexf)(GLfloat f)
1980
GET_CURRENT_CONTEXT(ctx);
1981
ATTR1F(VBO_ATTRIB_COLOR_INDEX, f);
1984
static void GLAPIENTRY
1985
TAG(Indexfv)(const GLfloat * f)
1987
GET_CURRENT_CONTEXT(ctx);
1988
ATTR1FV(VBO_ATTRIB_COLOR_INDEX, f);
1993
static void GLAPIENTRY
1994
TAG(MultiTexCoord1fARB)(GLenum target, GLfloat x)
1996
GET_CURRENT_CONTEXT(ctx);
1997
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2001
static void GLAPIENTRY
2002
TAG(MultiTexCoord1fvARB)(GLenum target, const GLfloat * v)
2004
GET_CURRENT_CONTEXT(ctx);
2005
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2009
static void GLAPIENTRY
2010
TAG(MultiTexCoord2fARB)(GLenum target, GLfloat x, GLfloat y)
2012
GET_CURRENT_CONTEXT(ctx);
2013
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2017
static void GLAPIENTRY
2018
TAG(MultiTexCoord2fvARB)(GLenum target, const GLfloat * v)
2020
GET_CURRENT_CONTEXT(ctx);
2021
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2025
static void GLAPIENTRY
2026
TAG(MultiTexCoord3fARB)(GLenum target, GLfloat x, GLfloat y, GLfloat z)
2028
GET_CURRENT_CONTEXT(ctx);
2029
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2030
ATTR3F(attr, x, y, z);
2033
static void GLAPIENTRY
2034
TAG(MultiTexCoord3fvARB)(GLenum target, const GLfloat * v)
2036
GET_CURRENT_CONTEXT(ctx);
2037
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2041
static void GLAPIENTRY
2042
TAG(MultiTexCoord4fARB)(GLenum target, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
2044
GET_CURRENT_CONTEXT(ctx);
2045
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2046
ATTR4F(attr, x, y, z, w);
2049
static void GLAPIENTRY
2050
TAG(MultiTexCoord4fvARB)(GLenum target, const GLfloat * v)
2052
GET_CURRENT_CONTEXT(ctx);
2053
GLuint attr = (target & 0x7) + VBO_ATTRIB_TEX0;
2057
static void GLAPIENTRY
874
2058
TAG(TexCoordP1ui)(GLenum type, GLuint coords)
876
2060
GET_CURRENT_CONTEXT(ctx);
2696
3376
UBYTE_TO_FLOAT(v[2]));
2701
* GL_NV_vertex_program:
2702
* Note that attribute indexes DO alias conventional vertex attributes.
2705
static void GLAPIENTRY
2706
TAG(VertexAttrib1sNV)(GLuint index, GLshort x)
2708
GET_CURRENT_CONTEXT(ctx);
2709
if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) x);
2712
static void GLAPIENTRY
2713
TAG(VertexAttrib1dNV)(GLuint index, GLdouble x)
2715
GET_CURRENT_CONTEXT(ctx);
2716
if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) x);
2719
static void GLAPIENTRY
2720
TAG(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y)
2722
GET_CURRENT_CONTEXT(ctx);
2723
if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) x, y);
2726
static void GLAPIENTRY
2727
TAG(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y)
2729
GET_CURRENT_CONTEXT(ctx);
2730
if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) x, (GLfloat) y);
2733
static void GLAPIENTRY
2734
TAG(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z)
2736
GET_CURRENT_CONTEXT(ctx);
2737
if (index < VBO_ATTRIB_MAX) ATTR3F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
2740
static void GLAPIENTRY
2741
TAG(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
2743
GET_CURRENT_CONTEXT(ctx);
2744
if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, 1.0F);
2747
static void GLAPIENTRY
2748
TAG(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
2750
GET_CURRENT_CONTEXT(ctx);
2751
if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
2754
static void GLAPIENTRY
2755
TAG(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
2757
GET_CURRENT_CONTEXT(ctx);
2758
if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
2761
static void GLAPIENTRY
2762
TAG(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
2764
GET_CURRENT_CONTEXT(ctx);
2765
if (index < VBO_ATTRIB_MAX) ATTR4F(index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y),
2766
UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
2769
static void GLAPIENTRY
2770
TAG(VertexAttrib1svNV)(GLuint index, const GLshort *v)
2772
GET_CURRENT_CONTEXT(ctx);
2773
if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) v[0]);
2776
static void GLAPIENTRY
2777
TAG(VertexAttrib1dvNV)(GLuint index, const GLdouble *v)
2779
GET_CURRENT_CONTEXT(ctx);
2780
if (index < VBO_ATTRIB_MAX) ATTR1F(index, (GLfloat) v[0]);
2783
static void GLAPIENTRY
2784
TAG(VertexAttrib2svNV)(GLuint index, const GLshort *v)
2786
GET_CURRENT_CONTEXT(ctx);
2787
if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) v[0], (GLfloat) v[1]);
2790
static void GLAPIENTRY
2791
TAG(VertexAttrib2dvNV)(GLuint index, const GLdouble *v)
2793
GET_CURRENT_CONTEXT(ctx);
2794
if (index < VBO_ATTRIB_MAX) ATTR2F(index, (GLfloat) v[0], (GLfloat) v[1]);
2797
static void GLAPIENTRY
2798
TAG(VertexAttrib3svNV)(GLuint index, const GLshort *v)
2800
GET_CURRENT_CONTEXT(ctx);
2801
if (index < VBO_ATTRIB_MAX) ATTR3F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
2804
static void GLAPIENTRY
2805
TAG(VertexAttrib3dvNV)(GLuint index, const GLdouble *v)
2807
GET_CURRENT_CONTEXT(ctx);
2808
if (index < VBO_ATTRIB_MAX) ATTR3F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
2811
static void GLAPIENTRY
2812
TAG(VertexAttrib4svNV)(GLuint index, const GLshort *v)
2814
GET_CURRENT_CONTEXT(ctx);
2815
if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2],
2819
static void GLAPIENTRY
2820
TAG(VertexAttrib4dvNV)(GLuint index, const GLdouble *v)
2822
GET_CURRENT_CONTEXT(ctx);
2823
if (index < VBO_ATTRIB_MAX) ATTR4F(index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat) v[3]);
2826
static void GLAPIENTRY
2827
TAG(VertexAttrib4ubvNV)(GLuint index, const GLubyte *v)
2829
GET_CURRENT_CONTEXT(ctx);
2830
if (index < VBO_ATTRIB_MAX) ATTR4F(index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]),
2831
UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
2835
static void GLAPIENTRY
2836
TAG(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort *v)
2838
GET_CURRENT_CONTEXT(ctx);
2840
n = MIN2(n, VBO_ATTRIB_MAX - index);
2841
for (i = n - 1; i >= 0; i--)
2842
ATTR1F(index + i, (GLfloat) v[i]);
2845
static void GLAPIENTRY
2846
TAG(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat *v)
2848
GET_CURRENT_CONTEXT(ctx);
2850
n = MIN2(n, VBO_ATTRIB_MAX - index);
2851
for (i = n - 1; i >= 0; i--)
2852
ATTR1F(index + i, v[i]);
2855
static void GLAPIENTRY
2856
TAG(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble *v)
2858
GET_CURRENT_CONTEXT(ctx);
2860
n = MIN2(n, VBO_ATTRIB_MAX - index);
2861
for (i = n - 1; i >= 0; i--)
2862
ATTR1F(index + i, (GLfloat) v[i]);
2865
static void GLAPIENTRY
2866
TAG(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort *v)
2868
GET_CURRENT_CONTEXT(ctx);
2870
n = MIN2(n, VBO_ATTRIB_MAX - index);
2871
for (i = n - 1; i >= 0; i--)
2872
ATTR2F(index + i, (GLfloat) v[2 * i], (GLfloat) v[2 * i + 1]);
2875
static void GLAPIENTRY
2876
TAG(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat *v)
2878
GET_CURRENT_CONTEXT(ctx);
2880
n = MIN2(n, VBO_ATTRIB_MAX - index);
2881
for (i = n - 1; i >= 0; i--)
2882
ATTR2F(index + i, v[2 * i], v[2 * i + 1]);
2885
static void GLAPIENTRY
2886
TAG(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble *v)
2888
GET_CURRENT_CONTEXT(ctx);
2890
n = MIN2(n, VBO_ATTRIB_MAX - index);
2891
for (i = n - 1; i >= 0; i--)
2892
ATTR2F(index + i, (GLfloat) v[2 * i], (GLfloat) v[2 * i + 1]);
2895
static void GLAPIENTRY
2896
TAG(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort *v)
2898
GET_CURRENT_CONTEXT(ctx);
2900
n = MIN2(n, VBO_ATTRIB_MAX - index);
2901
for (i = n - 1; i >= 0; i--)
2902
ATTR3F(index + i, (GLfloat) v[3 * i], (GLfloat) v[3 * i + 1], (GLfloat) v[3 * i + 2]);
2905
static void GLAPIENTRY
2906
TAG(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat *v)
2908
GET_CURRENT_CONTEXT(ctx);
2910
n = MIN2(n, VBO_ATTRIB_MAX - index);
2911
for (i = n - 1; i >= 0; i--)
2912
ATTR3F(index + i, v[3 * i], v[3 * i + 1], v[3 * i + 2]);
2915
static void GLAPIENTRY
2916
TAG(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble *v)
2918
GET_CURRENT_CONTEXT(ctx);
2920
n = MIN2(n, VBO_ATTRIB_MAX - index);
2921
for (i = n - 1; i >= 0; i--)
2922
ATTR3F(index + i, (GLfloat) v[3 * i], (GLfloat) v[3 * i + 1], (GLfloat) v[3 * i + 2]);
2925
static void GLAPIENTRY
2926
TAG(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort *v)
2928
GET_CURRENT_CONTEXT(ctx);
2930
n = MIN2(n, VBO_ATTRIB_MAX - index);
2931
for (i = n - 1; i >= 0; i--)
2932
ATTR4F(index + i, (GLfloat) v[4 * i], (GLfloat) v[4 * i + 1], (GLfloat) v[4 * i + 2], (GLfloat) v[4 * i + 3]);
2935
static void GLAPIENTRY
2936
TAG(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat *v)
2938
GET_CURRENT_CONTEXT(ctx);
2940
n = MIN2(n, VBO_ATTRIB_MAX - index);
2941
for (i = n - 1; i >= 0; i--)
2942
ATTR4F(index + i, v[4 * i], v[4 * i + 1], v[4 * i + 2], v[4 * i + 3]);
2945
static void GLAPIENTRY
2946
TAG(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble *v)
2948
GET_CURRENT_CONTEXT(ctx);
2950
n = MIN2(n, VBO_ATTRIB_MAX - index);
2951
for (i = n - 1; i >= 0; i--)
2952
ATTR4F(index + i, (GLfloat) v[4 * i], (GLfloat) v[4 * i + 1], (GLfloat) v[4 * i + 2], (GLfloat) v[4 * i + 3]);
2955
static void GLAPIENTRY
2956
TAG(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte *v)
2958
GET_CURRENT_CONTEXT(ctx);
2960
n = MIN2(n, VBO_ATTRIB_MAX - index);
2961
for (i = n - 1; i >= 0; i--)
2962
ATTR4F(index + i, UBYTE_TO_FLOAT(v[4 * i]), UBYTE_TO_FLOAT(v[4 * i + 1]),
2963
UBYTE_TO_FLOAT(v[4 * i + 2]), UBYTE_TO_FLOAT(v[4 * i + 3]));
2968
* GL_ARB_vertex_program
2969
* Note that attribute indexes do NOT alias conventional attributes.
2972
static void GLAPIENTRY
2973
TAG(VertexAttrib1s)(GLuint index, GLshort x)
2975
GET_CURRENT_CONTEXT(ctx);
2976
if (is_vertex_position(ctx, index))
2977
ATTR1F(0, (GLfloat) x);
2978
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
2979
ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x);
2981
ERROR(GL_INVALID_VALUE);
2984
static void GLAPIENTRY
2985
TAG(VertexAttrib1d)(GLuint index, GLdouble x)
2987
GET_CURRENT_CONTEXT(ctx);
2988
if (is_vertex_position(ctx, index))
2989
ATTR1F(0, (GLfloat) x);
2990
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
2991
ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x);
2993
ERROR(GL_INVALID_VALUE);
2996
static void GLAPIENTRY
2997
TAG(VertexAttrib2s)(GLuint index, GLshort x, GLshort y)
2999
GET_CURRENT_CONTEXT(ctx);
3000
if (is_vertex_position(ctx, index))
3001
ATTR2F(0, (GLfloat) x, (GLfloat) y);
3002
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3003
ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y);
3005
ERROR(GL_INVALID_VALUE);
3008
static void GLAPIENTRY
3009
TAG(VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y)
3011
GET_CURRENT_CONTEXT(ctx);
3012
if (is_vertex_position(ctx, index))
3013
ATTR2F(0, (GLfloat) x, (GLfloat) y);
3014
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3015
ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y);
3017
ERROR(GL_INVALID_VALUE);
3020
static void GLAPIENTRY
3021
TAG(VertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z)
3023
GET_CURRENT_CONTEXT(ctx);
3024
if (is_vertex_position(ctx, index))
3025
ATTR3F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z);
3026
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3027
ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
3029
ERROR(GL_INVALID_VALUE);
3032
static void GLAPIENTRY
3033
TAG(VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
3035
GET_CURRENT_CONTEXT(ctx);
3036
if (is_vertex_position(ctx, index))
3037
ATTR3F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z);
3038
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3039
ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z);
3041
ERROR(GL_INVALID_VALUE);
3044
static void GLAPIENTRY
3045
TAG(VertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
3047
GET_CURRENT_CONTEXT(ctx);
3048
if (is_vertex_position(ctx, index))
3049
ATTR4F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
3050
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3051
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
3053
ERROR(GL_INVALID_VALUE);
3056
static void GLAPIENTRY
3057
TAG(VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
3059
GET_CURRENT_CONTEXT(ctx);
3060
if (is_vertex_position(ctx, index))
3061
ATTR4F(0, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
3062
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3063
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) x, (GLfloat) y, (GLfloat) z, (GLfloat) w);
3065
ERROR(GL_INVALID_VALUE);
3068
static void GLAPIENTRY
3069
TAG(VertexAttrib1sv)(GLuint index, const GLshort *v)
3071
GET_CURRENT_CONTEXT(ctx);
3072
if (is_vertex_position(ctx, index))
3073
ATTR1F(0, (GLfloat) v[0]);
3074
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3075
ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0]);
3077
ERROR(GL_INVALID_VALUE);
3080
static void GLAPIENTRY
3081
TAG(VertexAttrib1dv)(GLuint index, const GLdouble *v)
3083
GET_CURRENT_CONTEXT(ctx);
3084
if (is_vertex_position(ctx, index))
3085
ATTR1F(0, (GLfloat) v[0]);
3086
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3087
ATTR1F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0]);
3089
ERROR(GL_INVALID_VALUE);
3092
static void GLAPIENTRY
3093
TAG(VertexAttrib2sv)(GLuint index, const GLshort *v)
3095
GET_CURRENT_CONTEXT(ctx);
3096
if (is_vertex_position(ctx, index))
3097
ATTR2F(0, (GLfloat) v[0], (GLfloat) v[1]);
3098
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3099
ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1]);
3101
ERROR(GL_INVALID_VALUE);
3104
static void GLAPIENTRY
3105
TAG(VertexAttrib2dv)(GLuint index, const GLdouble *v)
3107
GET_CURRENT_CONTEXT(ctx);
3108
if (is_vertex_position(ctx, index))
3109
ATTR2F(0, (GLfloat) v[0], (GLfloat) v[1]);
3110
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3111
ATTR2F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1]);
3113
ERROR(GL_INVALID_VALUE);
3116
static void GLAPIENTRY
3117
TAG(VertexAttrib3sv)(GLuint index, const GLshort *v)
3119
GET_CURRENT_CONTEXT(ctx);
3120
if (is_vertex_position(ctx, index))
3121
ATTR3F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
3122
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3123
ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
3125
ERROR(GL_INVALID_VALUE);
3128
static void GLAPIENTRY
3129
TAG(VertexAttrib3dv)(GLuint index, const GLdouble *v)
3131
GET_CURRENT_CONTEXT(ctx);
3132
if (is_vertex_position(ctx, index))
3133
ATTR3F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
3134
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3135
ATTR3F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
3137
ERROR(GL_INVALID_VALUE);
3140
static void GLAPIENTRY
3141
TAG(VertexAttrib4sv)(GLuint index, const GLshort *v)
3143
GET_CURRENT_CONTEXT(ctx);
3144
if (is_vertex_position(ctx, index))
3145
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3146
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3147
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3149
ERROR(GL_INVALID_VALUE);
3152
static void GLAPIENTRY
3153
TAG(VertexAttrib4dv)(GLuint index, const GLdouble *v)
3155
GET_CURRENT_CONTEXT(ctx);
3156
if (is_vertex_position(ctx, index))
3157
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3158
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3159
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3161
ERROR(GL_INVALID_VALUE);
3164
static void GLAPIENTRY
3165
TAG(VertexAttrib4bv)(GLuint index, const GLbyte * v)
3167
GET_CURRENT_CONTEXT(ctx);
3168
if (is_vertex_position(ctx, index))
3169
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3170
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3171
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3173
ERROR(GL_INVALID_VALUE);
3176
static void GLAPIENTRY
3177
TAG(VertexAttrib4iv)(GLuint index, const GLint * v)
3179
GET_CURRENT_CONTEXT(ctx);
3180
if (is_vertex_position(ctx, index))
3181
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3182
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3183
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3185
ERROR(GL_INVALID_VALUE);
3188
static void GLAPIENTRY
3189
TAG(VertexAttrib4ubv)(GLuint index, const GLubyte * v)
3191
GET_CURRENT_CONTEXT(ctx);
3192
if (is_vertex_position(ctx, index))
3193
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3194
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3195
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3197
ERROR(GL_INVALID_VALUE);
3200
static void GLAPIENTRY
3201
TAG(VertexAttrib4usv)(GLuint index, const GLushort * v)
3203
GET_CURRENT_CONTEXT(ctx);
3204
if (is_vertex_position(ctx, index))
3205
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3206
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3207
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3209
ERROR(GL_INVALID_VALUE);
3212
static void GLAPIENTRY
3213
TAG(VertexAttrib4uiv)(GLuint index, const GLuint * v)
3215
GET_CURRENT_CONTEXT(ctx);
3216
if (is_vertex_position(ctx, index))
3217
ATTR4F(0, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3218
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3219
ATTR4F(VBO_ATTRIB_GENERIC0 + index, (GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2], (GLfloat)v[3]);
3221
ERROR(GL_INVALID_VALUE);
3224
static void GLAPIENTRY
3225
TAG(VertexAttrib4Nbv)(GLuint index, const GLbyte * v)
3227
GET_CURRENT_CONTEXT(ctx);
3228
if (is_vertex_position(ctx, index))
3229
ATTR4F(0, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]));
3230
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3231
ATTR4F(VBO_ATTRIB_GENERIC0 + index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]), BYTE_TO_FLOAT(v[2]), BYTE_TO_FLOAT(v[3]));
3233
ERROR(GL_INVALID_VALUE);
3236
static void GLAPIENTRY
3237
TAG(VertexAttrib4Nsv)(GLuint index, const GLshort * v)
3239
GET_CURRENT_CONTEXT(ctx);
3240
if (is_vertex_position(ctx, index))
3241
ATTR4F(0, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]));
3242
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3243
ATTR4F(VBO_ATTRIB_GENERIC0 + index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]), SHORT_TO_FLOAT(v[2]), SHORT_TO_FLOAT(v[3]));
3245
ERROR(GL_INVALID_VALUE);
3248
static void GLAPIENTRY
3249
TAG(VertexAttrib4Niv)(GLuint index, const GLint * v)
3251
GET_CURRENT_CONTEXT(ctx);
3252
if (is_vertex_position(ctx, index))
3253
ATTR4F(0, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]));
3254
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3255
ATTR4F(VBO_ATTRIB_GENERIC0 + index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]), INT_TO_FLOAT(v[2]), INT_TO_FLOAT(v[3]));
3257
ERROR(GL_INVALID_VALUE);
3260
static void GLAPIENTRY
3261
TAG(VertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
3263
GET_CURRENT_CONTEXT(ctx);
3264
if (is_vertex_position(ctx, index))
3265
ATTR4F(0, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y), UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
3266
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3267
ATTR4F(VBO_ATTRIB_GENERIC0 + index, UBYTE_TO_FLOAT(x), UBYTE_TO_FLOAT(y), UBYTE_TO_FLOAT(z), UBYTE_TO_FLOAT(w));
3269
ERROR(GL_INVALID_VALUE);
3272
static void GLAPIENTRY
3273
TAG(VertexAttrib4Nubv)(GLuint index, const GLubyte * v)
3275
GET_CURRENT_CONTEXT(ctx);
3276
if (is_vertex_position(ctx, index))
3277
ATTR4F(0, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
3278
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3279
ATTR4F(VBO_ATTRIB_GENERIC0 + index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), UBYTE_TO_FLOAT(v[2]), UBYTE_TO_FLOAT(v[3]));
3281
ERROR(GL_INVALID_VALUE);
3284
static void GLAPIENTRY
3285
TAG(VertexAttrib4Nusv)(GLuint index, const GLushort * v)
3287
GET_CURRENT_CONTEXT(ctx);
3288
if (is_vertex_position(ctx, index))
3289
ATTR4F(0, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]));
3290
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3291
ATTR4F(VBO_ATTRIB_GENERIC0 + index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]), USHORT_TO_FLOAT(v[2]), USHORT_TO_FLOAT(v[3]));
3293
ERROR(GL_INVALID_VALUE);
3296
static void GLAPIENTRY
3297
TAG(VertexAttrib4Nuiv)(GLuint index, const GLuint * v)
3299
GET_CURRENT_CONTEXT(ctx);
3300
if (is_vertex_position(ctx, index))
3301
ATTR4F(0, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]));
3302
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3303
ATTR4F(VBO_ATTRIB_GENERIC0 + index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]), UINT_TO_FLOAT(v[2]), UINT_TO_FLOAT(v[3]));
3305
ERROR(GL_INVALID_VALUE);
3311
* GL_EXT_gpu_shader / GL 3.0 signed/unsigned integer-valued attributes.
3312
* Note that attribute indexes do NOT alias conventional attributes.
3315
static void GLAPIENTRY
3316
TAG(VertexAttribI1iv)(GLuint index, const GLint *v)
3318
GET_CURRENT_CONTEXT(ctx);
3319
if (is_vertex_position(ctx, index))
3321
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3322
ATTR1I(VBO_ATTRIB_GENERIC0 + index, v[0]);
3324
ERROR(GL_INVALID_VALUE);
3327
static void GLAPIENTRY
3328
TAG(VertexAttribI1uiv)(GLuint index, const GLuint *v)
3330
GET_CURRENT_CONTEXT(ctx);
3331
if (is_vertex_position(ctx, index))
3333
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3334
ATTR1UI(VBO_ATTRIB_GENERIC0 + index, v[0]);
3336
ERROR(GL_INVALID_VALUE);
3339
static void GLAPIENTRY
3340
TAG(VertexAttribI4bv)(GLuint index, const GLbyte *v)
3342
GET_CURRENT_CONTEXT(ctx);
3343
if (is_vertex_position(ctx, index))
3344
ATTR4I(0, v[0], v[1], v[2], v[3]);
3345
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3346
ATTR4I(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]);
3348
ERROR(GL_INVALID_VALUE);
3351
static void GLAPIENTRY
3352
TAG(VertexAttribI4sv)(GLuint index, const GLshort *v)
3354
GET_CURRENT_CONTEXT(ctx);
3355
if (is_vertex_position(ctx, index))
3356
ATTR4I(0, v[0], v[1], v[2], v[3]);
3357
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3358
ATTR4I(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]);
3360
ERROR(GL_INVALID_VALUE);
3363
static void GLAPIENTRY
3364
TAG(VertexAttribI4ubv)(GLuint index, const GLubyte *v)
3366
GET_CURRENT_CONTEXT(ctx);
3367
if (is_vertex_position(ctx, index))
3368
ATTR4UI(0, v[0], v[1], v[2], v[3]);
3369
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3370
ATTR4UI(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]);
3372
ERROR(GL_INVALID_VALUE);
3375
static void GLAPIENTRY
3376
TAG(VertexAttribI4usv)(GLuint index, const GLushort *v)
3378
GET_CURRENT_CONTEXT(ctx);
3379
if (is_vertex_position(ctx, index))
3380
ATTR4UI(0, v[0], v[1], v[2], v[3]);
3381
else if (index < MAX_VERTEX_GENERIC_ATTRIBS)
3382
ATTR4UI(VBO_ATTRIB_GENERIC0 + index, v[0], v[1], v[2], v[3]);
3384
ERROR(GL_INVALID_VALUE);
3379
#endif /* HW_SELECT_MODE */