Changeset 48325 in webkit
- Timestamp:
- Sep 11, 2009 5:13:32 PM (15 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r48323 r48325 1 2009-09-11 Chris Marrin <cmarrin@apple.com> 2 3 Reviewed by Oliver Hunt. 4 5 Added variants to uniform* and vertexAttrib* calls which take sequence<> in place of CanvasArray 6 https://bugs.webkit.org/show_bug.cgi?id=29139 7 8 I also added a data() call to each of the CanvasArray subclasses to give back a types pointer 9 to the baseAddress(). 10 11 * Configurations/FeatureDefines.xcconfig: 12 * bindings/js/JSCanvasRenderingContext3DCustom.cpp: 13 (WebCore::toArray): 14 (WebCore::): 15 (WebCore::dataFunctionf): 16 (WebCore::dataFunctioni): 17 (WebCore::dataFunctionMatrix): 18 (WebCore::JSCanvasRenderingContext3D::uniform1fv): 19 (WebCore::JSCanvasRenderingContext3D::uniform1iv): 20 (WebCore::JSCanvasRenderingContext3D::uniform2fv): 21 (WebCore::JSCanvasRenderingContext3D::uniform2iv): 22 (WebCore::JSCanvasRenderingContext3D::uniform3fv): 23 (WebCore::JSCanvasRenderingContext3D::uniform3iv): 24 (WebCore::JSCanvasRenderingContext3D::uniform4fv): 25 (WebCore::JSCanvasRenderingContext3D::uniform4iv): 26 (WebCore::JSCanvasRenderingContext3D::uniformMatrix2fv): 27 (WebCore::JSCanvasRenderingContext3D::uniformMatrix3fv): 28 (WebCore::JSCanvasRenderingContext3D::uniformMatrix4fv): 29 (WebCore::JSCanvasRenderingContext3D::vertexAttrib1fv): 30 (WebCore::JSCanvasRenderingContext3D::vertexAttrib2fv): 31 (WebCore::JSCanvasRenderingContext3D::vertexAttrib3fv): 32 (WebCore::JSCanvasRenderingContext3D::vertexAttrib4fv): 33 * html/canvas/CanvasByteArray.h: 34 (WebCore::CanvasByteArray::data): 35 * html/canvas/CanvasFloatArray.h: 36 (WebCore::CanvasFloatArray::data): 37 * html/canvas/CanvasIntArray.h: 38 (WebCore::CanvasIntArray::data): 39 * html/canvas/CanvasRenderingContext3D.cpp: 40 (WebCore::CanvasRenderingContext3D::uniform1fv): 41 (WebCore::CanvasRenderingContext3D::uniform1iv): 42 (WebCore::CanvasRenderingContext3D::uniform2fv): 43 (WebCore::CanvasRenderingContext3D::uniform2iv): 44 (WebCore::CanvasRenderingContext3D::uniform3fv): 45 (WebCore::CanvasRenderingContext3D::uniform3iv): 46 (WebCore::CanvasRenderingContext3D::uniform4fv): 47 (WebCore::CanvasRenderingContext3D::uniform4iv): 48 (WebCore::CanvasRenderingContext3D::uniformMatrix2fv): 49 (WebCore::CanvasRenderingContext3D::uniformMatrix3fv): 50 (WebCore::CanvasRenderingContext3D::uniformMatrix4fv): 51 (WebCore::CanvasRenderingContext3D::vertexAttrib1fv): 52 (WebCore::CanvasRenderingContext3D::vertexAttrib2fv): 53 (WebCore::CanvasRenderingContext3D::vertexAttrib3fv): 54 (WebCore::CanvasRenderingContext3D::vertexAttrib4fv): 55 * html/canvas/CanvasRenderingContext3D.h: 56 * html/canvas/CanvasRenderingContext3D.idl: 57 * html/canvas/CanvasShortArray.h: 58 (WebCore::CanvasShortArray::data): 59 * html/canvas/CanvasUnsignedByteArray.h: 60 (WebCore::CanvasUnsignedByteArray::data): 61 * html/canvas/CanvasUnsignedIntArray.h: 62 (WebCore::CanvasUnsignedIntArray::data): 63 * html/canvas/CanvasUnsignedShortArray.h: 64 (WebCore::CanvasUnsignedShortArray::data): 65 * platform/graphics/GraphicsContext3D.h: 66 * platform/graphics/mac/GraphicsContext3DMac.cpp: 67 (WebCore::GraphicsContext3D::uniform1fv): 68 (WebCore::GraphicsContext3D::uniform2fv): 69 (WebCore::GraphicsContext3D::uniform3fv): 70 (WebCore::GraphicsContext3D::uniform4fv): 71 (WebCore::GraphicsContext3D::uniform1iv): 72 (WebCore::GraphicsContext3D::uniform2iv): 73 (WebCore::GraphicsContext3D::uniform3iv): 74 (WebCore::GraphicsContext3D::uniform4iv): 75 (WebCore::GraphicsContext3D::uniformMatrix2fv): 76 (WebCore::GraphicsContext3D::uniformMatrix3fv): 77 (WebCore::GraphicsContext3D::uniformMatrix4fv): 78 (WebCore::GraphicsContext3D::vertexAttrib1fv): 79 (WebCore::GraphicsContext3D::vertexAttrib2fv): 80 (WebCore::GraphicsContext3D::vertexAttrib3fv): 81 (WebCore::GraphicsContext3D::vertexAttrib4fv): 82 1 83 2009-09-11 Fumitoshi Ukai <ukai@chromium.org> 2 84 -
trunk/WebCore/bindings/js/JSCanvasRenderingContext3DCustom.cpp
r48310 r48325 34 34 #include "HTMLCanvasElement.h" 35 35 #include "HTMLImageElement.h" 36 #include "JSCanvasArray.h" 36 #include "JSCanvasFloatArray.h" 37 #include "JSCanvasIntArray.h" 37 38 #include "JSHTMLCanvasElement.h" 38 39 #include "JSHTMLImageElement.h" … … 199 200 } 200 201 202 template<typename T> 203 void toArray(JSC::ExecState* exec, JSC::JSValue value, T*& array, int& size) 204 { 205 array = 0; 206 207 if (!value.isObject()) 208 return; 209 210 JSC::JSObject* object = asObject(value); 211 int length = object->get(exec, JSC::Identifier(exec, "length")).toInt32(exec); 212 void* tempValues; 213 if (!tryFastMalloc(length * sizeof(T)).getValue(tempValues)) 214 return; 215 216 T* values = static_cast<T*>(tempValues); 217 for (int i = 0; i < length; ++i) { 218 JSC::JSValue v = object->get(exec, i); 219 if (exec->hadException()) 220 return; 221 values[i] = static_cast<T>(v.toNumber(exec)); 222 } 223 224 array = values; 225 size = length; 226 } 227 228 enum DataFunctionToCall { 229 f_uniform1v, f_uniform2v, f_uniform3v, f_uniform4v, 230 f_vertexAttrib1v, f_vertexAttrib2v, f_vertexAttrib3v, f_vertexAttrib4v 231 }; 232 233 enum DataFunctionMatrixToCall { 234 f_uniformMatrix2fv, f_uniformMatrix3fv, f_uniformMatrix4fv 235 }; 236 237 static JSC::JSValue dataFunctionf(DataFunctionToCall f, JSC::ExecState* exec, const JSC::ArgList& args, CanvasRenderingContext3D* context) 238 { 239 if (args.size() != 2) 240 return throwError(exec, SyntaxError); 241 242 long location = args.at(0).toInt32(exec); 243 if (exec->hadException()) 244 return jsUndefined(); 245 246 RefPtr<CanvasFloatArray> canvasArray = toCanvasFloatArray(args.at(1)); 247 if (exec->hadException()) 248 return jsUndefined(); 249 250 if (canvasArray) { 251 switch(f) { 252 case f_uniform1v: context->uniform1fv(location, canvasArray.get()); break; 253 case f_uniform2v: context->uniform2fv(location, canvasArray.get()); break; 254 case f_uniform3v: context->uniform3fv(location, canvasArray.get()); break; 255 case f_uniform4v: context->uniform4fv(location, canvasArray.get()); break; 256 case f_vertexAttrib1v: context->vertexAttrib1fv(location, canvasArray.get()); break; 257 case f_vertexAttrib2v: context->vertexAttrib2fv(location, canvasArray.get()); break; 258 case f_vertexAttrib3v: context->vertexAttrib3fv(location, canvasArray.get()); break; 259 case f_vertexAttrib4v: context->vertexAttrib4fv(location, canvasArray.get()); break; 260 } 261 return jsUndefined(); 262 } 263 264 float* array; 265 int size; 266 toArray<float>(exec, args.at(1), array, size); 267 268 if (!array) 269 return throwError(exec, TypeError); 270 271 switch(f) { 272 case f_uniform1v: context->uniform1fv(location, array, size); break; 273 case f_uniform2v: context->uniform2fv(location, array, size); break; 274 case f_uniform3v: context->uniform3fv(location, array, size); break; 275 case f_uniform4v: context->uniform4fv(location, array, size); break; 276 case f_vertexAttrib1v: context->vertexAttrib1fv(location, array, size); break; 277 case f_vertexAttrib2v: context->vertexAttrib2fv(location, array, size); break; 278 case f_vertexAttrib3v: context->vertexAttrib3fv(location, array, size); break; 279 case f_vertexAttrib4v: context->vertexAttrib4fv(location, array, size); break; 280 } 281 return jsUndefined(); 282 } 283 284 static JSC::JSValue dataFunctioni(DataFunctionToCall f, JSC::ExecState* exec, const JSC::ArgList& args, CanvasRenderingContext3D* context) 285 { 286 if (args.size() != 2) 287 return throwError(exec, SyntaxError); 288 289 long location = args.at(0).toInt32(exec); 290 if (exec->hadException()) 291 return jsUndefined(); 292 293 RefPtr<CanvasIntArray> canvasArray = toCanvasIntArray(args.at(1)); 294 if (exec->hadException()) 295 return jsUndefined(); 296 297 if (canvasArray) { 298 switch(f) { 299 case f_uniform1v: context->uniform1iv(location, canvasArray.get()); break; 300 case f_uniform2v: context->uniform2iv(location, canvasArray.get()); break; 301 case f_uniform3v: context->uniform3iv(location, canvasArray.get()); break; 302 case f_uniform4v: context->uniform4iv(location, canvasArray.get()); break; 303 default: break; 304 } 305 return jsUndefined(); 306 } 307 308 int* array; 309 int size; 310 toArray<int>(exec, args.at(1), array, size); 311 312 if (!array) 313 return throwError(exec, TypeError); 314 315 switch(f) { 316 case f_uniform1v: context->uniform1iv(location, array, size); break; 317 case f_uniform2v: context->uniform2iv(location, array, size); break; 318 case f_uniform3v: context->uniform3iv(location, array, size); break; 319 case f_uniform4v: context->uniform4iv(location, array, size); break; 320 default: break; 321 } 322 return jsUndefined(); 323 } 324 325 static JSC::JSValue dataFunctionMatrix(DataFunctionMatrixToCall f, JSC::ExecState* exec, const JSC::ArgList& args, CanvasRenderingContext3D* context) 326 { 327 if (args.size() != 3) 328 return throwError(exec, SyntaxError); 329 330 long location = args.at(0).toInt32(exec); 331 if (exec->hadException()) 332 return jsUndefined(); 333 334 bool transpose = args.at(1).toBoolean(exec); 335 if (exec->hadException()) 336 return jsUndefined(); 337 338 RefPtr<CanvasFloatArray> canvasArray = toCanvasFloatArray(args.at(2)); 339 if (exec->hadException()) 340 return jsUndefined(); 341 342 if (canvasArray) { 343 switch(f) { 344 case f_uniformMatrix2fv: context->uniformMatrix2fv(location, transpose, canvasArray.get()); break; 345 case f_uniformMatrix3fv: context->uniformMatrix3fv(location, transpose, canvasArray.get()); break; 346 case f_uniformMatrix4fv: context->uniformMatrix4fv(location, transpose, canvasArray.get()); break; 347 } 348 return jsUndefined(); 349 } 350 351 float* array; 352 int size; 353 toArray<float>(exec, args.at(2), array, size); 354 355 if (!array) 356 return throwError(exec, TypeError); 357 358 switch(f) { 359 case f_uniformMatrix2fv: context->uniformMatrix2fv(location, transpose, array, size); break; 360 case f_uniformMatrix3fv: context->uniformMatrix3fv(location, transpose, array, size); break; 361 case f_uniformMatrix4fv: context->uniformMatrix4fv(location, transpose, array, size); break; 362 } 363 return jsUndefined(); 364 } 365 366 JSC::JSValue JSCanvasRenderingContext3D::uniform1fv(JSC::ExecState* exec, const JSC::ArgList& args) 367 { 368 return dataFunctionf(f_uniform1v, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 369 } 370 371 JSC::JSValue JSCanvasRenderingContext3D::uniform1iv(JSC::ExecState* exec, const JSC::ArgList& args) 372 { 373 return dataFunctioni(f_uniform1v, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 374 } 375 376 JSC::JSValue JSCanvasRenderingContext3D::uniform2fv(JSC::ExecState* exec, const JSC::ArgList& args) 377 { 378 return dataFunctionf(f_uniform2v, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 379 } 380 381 JSC::JSValue JSCanvasRenderingContext3D::uniform2iv(JSC::ExecState* exec, const JSC::ArgList& args) 382 { 383 return dataFunctioni(f_uniform2v, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 384 } 385 386 JSC::JSValue JSCanvasRenderingContext3D::uniform3fv(JSC::ExecState* exec, const JSC::ArgList& args) 387 { 388 return dataFunctionf(f_uniform3v, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 389 } 390 391 JSC::JSValue JSCanvasRenderingContext3D::uniform3iv(JSC::ExecState* exec, const JSC::ArgList& args) 392 { 393 return dataFunctioni(f_uniform3v, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 394 } 395 396 JSC::JSValue JSCanvasRenderingContext3D::uniform4fv(JSC::ExecState* exec, const JSC::ArgList& args) 397 { 398 return dataFunctionf(f_uniform4v, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 399 } 400 401 JSC::JSValue JSCanvasRenderingContext3D::uniform4iv(JSC::ExecState* exec, const JSC::ArgList& args) 402 { 403 return dataFunctioni(f_uniform4v, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 404 } 405 406 JSC::JSValue JSCanvasRenderingContext3D::uniformMatrix2fv(JSC::ExecState* exec, const JSC::ArgList& args) 407 { 408 return dataFunctionMatrix(f_uniformMatrix2fv, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 409 } 410 411 JSC::JSValue JSCanvasRenderingContext3D::uniformMatrix3fv(JSC::ExecState* exec, const JSC::ArgList& args) 412 { 413 return dataFunctionMatrix(f_uniformMatrix3fv, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 414 } 415 416 JSC::JSValue JSCanvasRenderingContext3D::uniformMatrix4fv(JSC::ExecState* exec, const JSC::ArgList& args) 417 { 418 return dataFunctionMatrix(f_uniformMatrix4fv, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 419 } 420 421 JSC::JSValue JSCanvasRenderingContext3D::vertexAttrib1fv(JSC::ExecState* exec, const JSC::ArgList& args) 422 { 423 return dataFunctionf(f_vertexAttrib1v, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 424 } 425 426 JSC::JSValue JSCanvasRenderingContext3D::vertexAttrib2fv(JSC::ExecState* exec, const JSC::ArgList& args) 427 { 428 return dataFunctionf(f_vertexAttrib2v, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 429 } 430 431 JSC::JSValue JSCanvasRenderingContext3D::vertexAttrib3fv(JSC::ExecState* exec, const JSC::ArgList& args) 432 { 433 return dataFunctionf(f_vertexAttrib3v, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 434 } 435 436 JSC::JSValue JSCanvasRenderingContext3D::vertexAttrib4fv(JSC::ExecState* exec, const JSC::ArgList& args) 437 { 438 return dataFunctionf(f_vertexAttrib4v, exec, args, static_cast<CanvasRenderingContext3D*>(impl())); 439 } 440 201 441 } // namespace WebCore 202 442 -
trunk/WebCore/html/canvas/CanvasByteArray.h
r48200 r48325 42 42 static PassRefPtr<CanvasByteArray> create(PassRefPtr<CanvasArrayBuffer> buffer, int offset, unsigned length); 43 43 44 char* data() { return static_cast<char*>(baseAddress()); } 45 44 46 virtual unsigned length() const; 45 47 virtual unsigned sizeInBytes() const; -
trunk/WebCore/html/canvas/CanvasFloatArray.h
r48200 r48325 39 39 static PassRefPtr<CanvasFloatArray> create(float* array, unsigned length); 40 40 static PassRefPtr<CanvasFloatArray> create(PassRefPtr<CanvasArrayBuffer> buffer, int offset, unsigned length); 41 42 float* data() { return static_cast<float*>(baseAddress()); } 41 43 42 44 virtual unsigned length() const; -
trunk/WebCore/html/canvas/CanvasIntArray.h
r48200 r48325 39 39 static PassRefPtr<CanvasIntArray> create(int* array, unsigned length); 40 40 static PassRefPtr<CanvasIntArray> create(PassRefPtr<CanvasArrayBuffer> buffer, int offset, unsigned length); 41 42 int* data() { return static_cast<int*>(baseAddress()); } 41 43 42 44 virtual unsigned length() const; -
trunk/WebCore/html/canvas/CanvasRenderingContext3D.cpp
r48150 r48325 982 982 return; 983 983 984 m_context.uniform1fv(location, v); 984 m_context.uniform1fv(location, v->data(), v->length()); 985 cleanupAfterGraphicsCall(false); 986 } 987 988 void CanvasRenderingContext3D::uniform1fv(long location, float* v, int size) 989 { 990 // FIXME: we need to throw if no array passed in 991 if (!v) 992 return; 993 994 m_context.uniform1fv(location, v, size); 985 995 cleanupAfterGraphicsCall(false); 986 996 } … … 998 1008 return; 999 1009 1000 m_context.uniform1iv(location, v); 1010 m_context.uniform1iv(location, v->data(), v->length()); 1011 cleanupAfterGraphicsCall(false); 1012 } 1013 1014 void CanvasRenderingContext3D::uniform1iv(long location, int* v, int size) 1015 { 1016 // FIXME: we need to throw if no array passed in 1017 if (!v) 1018 return; 1019 1020 m_context.uniform1iv(location, v, size); 1001 1021 cleanupAfterGraphicsCall(false); 1002 1022 } … … 1014 1034 return; 1015 1035 1016 m_context.uniform2fv(location, v); 1036 // FIXME: length needs to be a multiple of 2 1037 m_context.uniform2fv(location, v->data(), v->length() / 2); 1038 cleanupAfterGraphicsCall(false); 1039 } 1040 1041 void CanvasRenderingContext3D::uniform2fv(long location, float* v, int size) 1042 { 1043 // FIXME: we need to throw if no array passed in 1044 if (!v) 1045 return; 1046 1047 // FIXME: length needs to be a multiple of 2 1048 m_context.uniform2fv(location, v, size / 2); 1017 1049 cleanupAfterGraphicsCall(false); 1018 1050 } … … 1030 1062 return; 1031 1063 1032 m_context.uniform2iv(location, v); 1064 // FIXME: length needs to be a multiple of 2 1065 m_context.uniform2iv(location, v->data(), v->length() / 2); 1066 cleanupAfterGraphicsCall(false); 1067 } 1068 1069 void CanvasRenderingContext3D::uniform2iv(long location, int* v, int size) 1070 { 1071 // FIXME: we need to throw if no array passed in 1072 if (!v) 1073 return; 1074 1075 // FIXME: length needs to be a multiple of 2 1076 m_context.uniform2iv(location, v, size / 2); 1033 1077 cleanupAfterGraphicsCall(false); 1034 1078 } … … 1046 1090 return; 1047 1091 1048 m_context.uniform3fv(location, v); 1092 // FIXME: length needs to be a multiple of 3 1093 m_context.uniform3fv(location, v->data(), v->length() / 3); 1094 cleanupAfterGraphicsCall(false); 1095 } 1096 1097 void CanvasRenderingContext3D::uniform3fv(long location, float* v, int size) 1098 { 1099 // FIXME: we need to throw if no array passed in 1100 if (!v) 1101 return; 1102 1103 // FIXME: length needs to be a multiple of 3 1104 m_context.uniform3fv(location, v, size / 3); 1049 1105 cleanupAfterGraphicsCall(false); 1050 1106 } … … 1062 1118 return; 1063 1119 1064 m_context.uniform3iv(location, v); 1120 // FIXME: length needs to be a multiple of 3 1121 m_context.uniform3iv(location, v->data(), v->length() / 3); 1122 cleanupAfterGraphicsCall(false); 1123 } 1124 1125 void CanvasRenderingContext3D::uniform3iv(long location, int* v, int size) 1126 { 1127 // FIXME: we need to throw if no array passed in 1128 if (!v) 1129 return; 1130 1131 // FIXME: length needs to be a multiple of 3 1132 m_context.uniform3iv(location, v, size / 3); 1065 1133 cleanupAfterGraphicsCall(false); 1066 1134 } … … 1078 1146 return; 1079 1147 1080 m_context.uniform4fv(location, v); 1148 // FIXME: length needs to be a multiple of 4 1149 m_context.uniform4fv(location, v->data(), v->length() / 4); 1150 cleanupAfterGraphicsCall(false); 1151 } 1152 1153 void CanvasRenderingContext3D::uniform4fv(long location, float* v, int size) 1154 { 1155 // FIXME: we need to throw if no array passed in 1156 if (!v) 1157 return; 1158 1159 // FIXME: length needs to be a multiple of 4 1160 m_context.uniform4fv(location, v, size / 4); 1081 1161 cleanupAfterGraphicsCall(false); 1082 1162 } … … 1094 1174 return; 1095 1175 1096 m_context.uniform4iv(location, v); 1097 cleanupAfterGraphicsCall(false); 1098 } 1099 1100 void CanvasRenderingContext3D::uniformMatrix2fv(long location, bool transpose, CanvasFloatArray* value) 1101 { 1102 // FIXME: we need to throw if no array passed in 1103 if (!value) 1104 return; 1105 1106 m_context.uniformMatrix2fv(location, transpose, value); 1107 cleanupAfterGraphicsCall(false); 1108 } 1109 1110 void CanvasRenderingContext3D::uniformMatrix3fv(long location, bool transpose, CanvasFloatArray* value) 1111 { 1112 // FIXME: we need to throw if no array passed in 1113 if (!value) 1114 return; 1115 1116 m_context.uniformMatrix3fv(location, transpose, value); 1117 cleanupAfterGraphicsCall(false); 1118 } 1119 1120 void CanvasRenderingContext3D::uniformMatrix4fv(long location, bool transpose, CanvasFloatArray* value) 1121 { 1122 // FIXME: we need to throw if no array passed in 1123 if (!value) 1124 return; 1125 1126 m_context.uniformMatrix4fv(location, transpose, value); 1176 // FIXME: length needs to be a multiple of 4 1177 m_context.uniform4iv(location, v->data(), v->length() / 4); 1178 cleanupAfterGraphicsCall(false); 1179 } 1180 1181 void CanvasRenderingContext3D::uniform4iv(long location, int* v, int size) 1182 { 1183 // FIXME: we need to throw if no array passed in 1184 if (!v) 1185 return; 1186 1187 // FIXME: length needs to be a multiple of 4 1188 m_context.uniform4iv(location, v, size / 4); 1189 cleanupAfterGraphicsCall(false); 1190 } 1191 1192 void CanvasRenderingContext3D::uniformMatrix2fv(long location, bool transpose, CanvasFloatArray* v) 1193 { 1194 // FIXME: we need to throw if no array passed in 1195 if (!v) 1196 return; 1197 1198 // FIXME: length needs to be a multiple of 4 1199 m_context.uniformMatrix2fv(location, transpose, v->data(), v->length() / 4); 1200 cleanupAfterGraphicsCall(false); 1201 } 1202 1203 void CanvasRenderingContext3D::uniformMatrix2fv(long location, bool transpose, float* v, int size) 1204 { 1205 // FIXME: we need to throw if no array passed in 1206 if (!v) 1207 return; 1208 1209 // FIXME: length needs to be a multiple of 4 1210 m_context.uniformMatrix2fv(location, transpose, v, size / 4); 1211 cleanupAfterGraphicsCall(false); 1212 } 1213 1214 void CanvasRenderingContext3D::uniformMatrix3fv(long location, bool transpose, CanvasFloatArray* v) 1215 { 1216 // FIXME: we need to throw if no array passed in 1217 if (!v) 1218 return; 1219 1220 // FIXME: length needs to be a multiple of 9 1221 m_context.uniformMatrix3fv(location, transpose, v->data(), v->length() / 9); 1222 cleanupAfterGraphicsCall(false); 1223 } 1224 1225 void CanvasRenderingContext3D::uniformMatrix3fv(long location, bool transpose, float* v, int size) 1226 { 1227 // FIXME: we need to throw if no array passed in 1228 if (!v) 1229 return; 1230 1231 // FIXME: length needs to be a multiple of 9 1232 m_context.uniformMatrix3fv(location, transpose, v, size / 9); 1233 cleanupAfterGraphicsCall(false); 1234 } 1235 1236 void CanvasRenderingContext3D::uniformMatrix4fv(long location, bool transpose, CanvasFloatArray* v) 1237 { 1238 // FIXME: we need to throw if no array passed in 1239 if (!v) 1240 return; 1241 1242 // FIXME: length needs to be a multiple of 16 1243 m_context.uniformMatrix4fv(location, transpose, v->data(), v->length() / 16); 1244 cleanupAfterGraphicsCall(false); 1245 } 1246 1247 void CanvasRenderingContext3D::uniformMatrix4fv(long location, bool transpose, float* v, int size) 1248 { 1249 // FIXME: we need to throw if no array passed in 1250 if (!v) 1251 return; 1252 1253 // FIXME: length needs to be a multiple of 16 1254 m_context.uniformMatrix4fv(location, transpose, v, size / 16); 1127 1255 cleanupAfterGraphicsCall(false); 1128 1256 } … … 1146 1274 } 1147 1275 1148 void CanvasRenderingContext3D::vertexAttrib1fv(unsigned long indx, CanvasFloatArray* values) 1149 { 1150 m_context.vertexAttrib1fv(indx, values); 1276 void CanvasRenderingContext3D::vertexAttrib1fv(unsigned long indx, CanvasFloatArray* v) 1277 { 1278 // FIXME: Need to make sure array is big enough for attribute being set 1279 m_context.vertexAttrib1fv(indx, v->data()); 1280 cleanupAfterGraphicsCall(false); 1281 } 1282 1283 void CanvasRenderingContext3D::vertexAttrib1fv(unsigned long indx, float* v, int size) 1284 { 1285 // FIXME: Need to make sure array is big enough for attribute being set 1286 UNUSED_PARAM(size); 1287 1288 m_context.vertexAttrib1fv(indx, v); 1151 1289 cleanupAfterGraphicsCall(false); 1152 1290 } … … 1158 1296 } 1159 1297 1160 void CanvasRenderingContext3D::vertexAttrib2fv(unsigned long indx, CanvasFloatArray* values) 1161 { 1162 m_context.vertexAttrib2fv(indx, values); 1298 void CanvasRenderingContext3D::vertexAttrib2fv(unsigned long indx, CanvasFloatArray* v) 1299 { 1300 // FIXME: Need to make sure array is big enough for attribute being set 1301 m_context.vertexAttrib2fv(indx, v->data()); 1302 cleanupAfterGraphicsCall(false); 1303 } 1304 1305 void CanvasRenderingContext3D::vertexAttrib2fv(unsigned long indx, float* v, int size) 1306 { 1307 // FIXME: Need to make sure array is big enough for attribute being set 1308 UNUSED_PARAM(size); 1309 1310 m_context.vertexAttrib2fv(indx, v); 1163 1311 cleanupAfterGraphicsCall(false); 1164 1312 } … … 1170 1318 } 1171 1319 1172 void CanvasRenderingContext3D::vertexAttrib3fv(unsigned long indx, CanvasFloatArray* values) 1173 { 1174 m_context.vertexAttrib3fv(indx, values); 1320 void CanvasRenderingContext3D::vertexAttrib3fv(unsigned long indx, CanvasFloatArray* v) 1321 { 1322 // FIXME: Need to make sure array is big enough for attribute being set 1323 m_context.vertexAttrib3fv(indx, v->data()); 1324 cleanupAfterGraphicsCall(false); 1325 } 1326 1327 void CanvasRenderingContext3D::vertexAttrib3fv(unsigned long indx, float* v, int size) 1328 { 1329 // FIXME: Need to make sure array is big enough for attribute being set 1330 UNUSED_PARAM(size); 1331 1332 m_context.vertexAttrib3fv(indx, v); 1175 1333 cleanupAfterGraphicsCall(false); 1176 1334 } … … 1182 1340 } 1183 1341 1184 void CanvasRenderingContext3D::vertexAttrib4fv(unsigned long indx, CanvasFloatArray* values) 1185 { 1186 m_context.vertexAttrib4fv(indx, values); 1342 void CanvasRenderingContext3D::vertexAttrib4fv(unsigned long indx, CanvasFloatArray* v) 1343 { 1344 // FIXME: Need to make sure array is big enough for attribute being set 1345 m_context.vertexAttrib4fv(indx, v->data()); 1346 cleanupAfterGraphicsCall(false); 1347 } 1348 1349 void CanvasRenderingContext3D::vertexAttrib4fv(unsigned long indx, float* v, int size) 1350 { 1351 // FIXME: Need to make sure array is big enough for attribute being set 1352 UNUSED_PARAM(size); 1353 1354 m_context.vertexAttrib4fv(indx, v); 1187 1355 cleanupAfterGraphicsCall(false); 1188 1356 } -
trunk/WebCore/html/canvas/CanvasRenderingContext3D.h
r48150 r48325 237 237 void uniform1f(long location, float x); 238 238 void uniform1fv(long location, CanvasFloatArray* v); 239 void uniform1fv(long location, float* v, int size); 239 240 void uniform1i(long location, int x); 240 241 void uniform1iv(long location, CanvasIntArray* v); 242 void uniform1iv(long location, int* v, int size); 241 243 void uniform2f(long location, float x, float y); 242 244 void uniform2fv(long location, CanvasFloatArray* v); 245 void uniform2fv(long location, float* v, int size); 243 246 void uniform2i(long location, int x, int y); 244 247 void uniform2iv(long location, CanvasIntArray* v); 248 void uniform2iv(long location, int* v, int size); 245 249 void uniform3f(long location, float x, float y, float z); 246 250 void uniform3fv(long location, CanvasFloatArray* v); 251 void uniform3fv(long location, float* v, int size); 247 252 void uniform3i(long location, int x, int y, int z); 248 253 void uniform3iv(long location, CanvasIntArray* v); 254 void uniform3iv(long location, int* v, int size); 249 255 void uniform4f(long location, float x, float y, float z, float w); 250 256 void uniform4fv(long location, CanvasFloatArray* v); 257 void uniform4fv(long location, float* v, int size); 251 258 void uniform4i(long location, int x, int y, int z, int w); 252 259 void uniform4iv(long location, CanvasIntArray* v); 260 void uniform4iv(long location, int* v, int size); 253 261 void uniformMatrix2fv(long location, bool transpose, CanvasFloatArray* value); 262 void uniformMatrix2fv(long location, bool transpose, float* value, int size); 254 263 void uniformMatrix3fv(long location, bool transpose, CanvasFloatArray* value); 264 void uniformMatrix3fv(long location, bool transpose, float* value, int size); 255 265 void uniformMatrix4fv(long location, bool transpose, CanvasFloatArray* value); 266 void uniformMatrix4fv(long location, bool transpose, float* value, int size); 256 267 257 268 void useProgram(CanvasProgram*); … … 260 271 void vertexAttrib1f(unsigned long indx, float x); 261 272 void vertexAttrib1fv(unsigned long indx, CanvasFloatArray* values); 273 void vertexAttrib1fv(unsigned long indx, float* values, int size); 262 274 void vertexAttrib2f(unsigned long indx, float x, float y); 263 275 void vertexAttrib2fv(unsigned long indx, CanvasFloatArray* values); 276 void vertexAttrib2fv(unsigned long indx, float* values, int size); 264 277 void vertexAttrib3f(unsigned long indx, float x, float y, float z); 265 278 void vertexAttrib3fv(unsigned long indx, CanvasFloatArray* values); 279 void vertexAttrib3fv(unsigned long indx, float* values, int size); 266 280 void vertexAttrib4f(unsigned long indx, float x, float y, float z, float w); 267 281 void vertexAttrib4fv(unsigned long indx, CanvasFloatArray* values); 282 void vertexAttrib4fv(unsigned long indx, float* values, int size); 268 283 void vertexAttribPointer(unsigned long indx, long size, unsigned long type, bool normalized, 269 284 unsigned long stride, unsigned long offset); -
trunk/WebCore/html/canvas/CanvasRenderingContext3D.idl
r48150 r48325 648 648 649 649 void uniform1f(in long location, in float x); 650 void uniform1fv(in long location, in CanvasFloatArray v);650 [Custom] void uniform1fv(in long location, in CanvasFloatArray v); 651 651 void uniform1i(in long location, in long x); 652 void uniform1iv(in long location, in CanvasIntArray v);652 [Custom] void uniform1iv(in long location, in CanvasIntArray v); 653 653 void uniform2f(in long location, in float x, in float y); 654 void uniform2fv(in long location, in CanvasFloatArray v);654 [Custom] void uniform2fv(in long location, in CanvasFloatArray v); 655 655 void uniform2i(in long location, in long x, in long y); 656 void uniform2iv(in long location, in CanvasIntArray v);656 [Custom] void uniform2iv(in long location, in CanvasIntArray v); 657 657 void uniform3f(in long location, in float x, in float y, in float z); 658 void uniform3fv(in long location, in CanvasFloatArray v);658 [Custom] void uniform3fv(in long location, in CanvasFloatArray v); 659 659 void uniform3i(in long location, in long x, in long y, in long z); 660 void uniform3iv(in long location, in CanvasIntArray v);660 [Custom] void uniform3iv(in long location, in CanvasIntArray v); 661 661 void uniform4f(in long location, in float x, in float y, in float z, in float w); 662 void uniform4fv(in long location, in CanvasFloatArray v);662 [Custom] void uniform4fv(in long location, in CanvasFloatArray v); 663 663 void uniform4i(in long location, in long x, in long y, in long z, in long w); 664 void uniform4iv(in long location, in CanvasIntArray v);665 666 void uniformMatrix2fv(in long location, in boolean transpose, in CanvasFloatArray array);667 void uniformMatrix3fv(in long location, in boolean transpose, in CanvasFloatArray array);668 void uniformMatrix4fv(in long location, in boolean transpose, in CanvasFloatArray array);664 [Custom] void uniform4iv(in long location, in CanvasIntArray v); 665 666 [Custom] void uniformMatrix2fv(in long location, in boolean transpose, in CanvasFloatArray array); 667 [Custom] void uniformMatrix3fv(in long location, in boolean transpose, in CanvasFloatArray array); 668 [Custom] void uniformMatrix4fv(in long location, in boolean transpose, in CanvasFloatArray array); 669 669 670 670 void useProgram(in CanvasProgram program); … … 672 672 673 673 void vertexAttrib1f(in unsigned long indx, in float x); 674 void vertexAttrib1fv(in unsigned long indx, in CanvasFloatArray values);674 [Custom] void vertexAttrib1fv(in unsigned long indx, in CanvasFloatArray values); 675 675 void vertexAttrib2f(in unsigned long indx, in float x, in float y); 676 void vertexAttrib2fv(in unsigned long indx, in CanvasFloatArray values);676 [Custom] void vertexAttrib2fv(in unsigned long indx, in CanvasFloatArray values); 677 677 void vertexAttrib3f(in unsigned long indx, in float x, in float y, in float z); 678 void vertexAttrib3fv(in unsigned long indx, in CanvasFloatArray values);678 [Custom] void vertexAttrib3fv(in unsigned long indx, in CanvasFloatArray values); 679 679 void vertexAttrib4f(in unsigned long indx, in float x, in float y, in float z, in float w); 680 void vertexAttrib4fv(in unsigned long indx, in CanvasFloatArray values);680 [Custom] void vertexAttrib4fv(in unsigned long indx, in CanvasFloatArray values); 681 681 void vertexAttribPointer(in unsigned long indx, in long size, in unsigned long type, in boolean normalized, 682 682 in long stride, in unsigned long offset); -
trunk/WebCore/html/canvas/CanvasShortArray.h
r48200 r48325 40 40 static PassRefPtr<CanvasShortArray> create(PassRefPtr<CanvasArrayBuffer> buffer, int offset, unsigned length); 41 41 42 short* data() { return static_cast<short*>(baseAddress()); } 43 42 44 virtual unsigned length() const; 43 45 virtual unsigned sizeInBytes() const; -
trunk/WebCore/html/canvas/CanvasUnsignedByteArray.h
r48200 r48325 40 40 static PassRefPtr<CanvasUnsignedByteArray> create(PassRefPtr<CanvasArrayBuffer> buffer, int offset, unsigned length); 41 41 42 unsigned char* data() { return static_cast<unsigned char*>(baseAddress()); } 43 42 44 virtual unsigned length() const; 43 45 virtual unsigned sizeInBytes() const; -
trunk/WebCore/html/canvas/CanvasUnsignedIntArray.h
r48200 r48325 40 40 static PassRefPtr<CanvasUnsignedIntArray> create(PassRefPtr<CanvasArrayBuffer> buffer, int offset, unsigned length); 41 41 42 unsigned int* data() { return static_cast<unsigned int*>(baseAddress()); } 43 42 44 virtual unsigned length() const; 43 45 virtual unsigned sizeInBytes() const; -
trunk/WebCore/html/canvas/CanvasUnsignedShortArray.h
r48200 r48325 40 40 static PassRefPtr<CanvasUnsignedShortArray> create(PassRefPtr<CanvasArrayBuffer> buffer, int offset, unsigned length); 41 41 42 unsigned short* data() { return static_cast<unsigned short*>(baseAddress()); } 43 42 44 virtual unsigned length() const; 43 45 virtual unsigned sizeInBytes() const; -
trunk/WebCore/platform/graphics/GraphicsContext3D.h
r48150 r48325 250 250 251 251 void uniform1f(long location, float x); 252 void uniform1fv(long location, CanvasFloatArray* v);252 void uniform1fv(long location, float* v, int size); 253 253 void uniform1i(long location, int x); 254 void uniform1iv(long location, CanvasIntArray* v);254 void uniform1iv(long location, int* v, int size); 255 255 void uniform2f(long location, float x, float y); 256 void uniform2fv(long location, CanvasFloatArray* v);256 void uniform2fv(long location, float* v, int size); 257 257 void uniform2i(long location, int x, int y); 258 void uniform2iv(long location, CanvasIntArray* v);258 void uniform2iv(long location, int* v, int size); 259 259 void uniform3f(long location, float x, float y, float z); 260 void uniform3fv(long location, CanvasFloatArray* v);260 void uniform3fv(long location, float* v, int size); 261 261 void uniform3i(long location, int x, int y, int z); 262 void uniform3iv(long location, CanvasIntArray* v);262 void uniform3iv(long location, int* v, int size); 263 263 void uniform4f(long location, float x, float y, float z, float w); 264 void uniform4fv(long location, CanvasFloatArray* v);264 void uniform4fv(long location, float* v, int size); 265 265 void uniform4i(long location, int x, int y, int z, int w); 266 void uniform4iv(long location, CanvasIntArray* v);267 void uniformMatrix2fv(long location, bool transpose, CanvasFloatArray* value);268 void uniformMatrix3fv(long location, bool transpose, CanvasFloatArray* value);269 void uniformMatrix4fv(long location, bool transpose, CanvasFloatArray* value);266 void uniform4iv(long location, int* v, int size); 267 void uniformMatrix2fv(long location, bool transpose, float* value, int size); 268 void uniformMatrix3fv(long location, bool transpose, float* value, int size); 269 void uniformMatrix4fv(long location, bool transpose, float* value, int size); 270 270 271 271 void useProgram(CanvasProgram*); … … 273 273 274 274 void vertexAttrib1f(unsigned long indx, float x); 275 void vertexAttrib1fv(unsigned long indx, CanvasFloatArray* values);275 void vertexAttrib1fv(unsigned long indx, float* values); 276 276 void vertexAttrib2f(unsigned long indx, float x, float y); 277 void vertexAttrib2fv(unsigned long indx, CanvasFloatArray* values);277 void vertexAttrib2fv(unsigned long indx, float* values); 278 278 void vertexAttrib3f(unsigned long indx, float x, float y, float z); 279 void vertexAttrib3fv(unsigned long indx, CanvasFloatArray* values);279 void vertexAttrib3fv(unsigned long indx, float* values); 280 280 void vertexAttrib4f(unsigned long indx, float x, float y, float z, float w); 281 void vertexAttrib4fv(unsigned long indx, CanvasFloatArray* values);281 void vertexAttrib4fv(unsigned long indx, float* values); 282 282 void vertexAttribPointer(unsigned long indx, int size, int type, bool normalized, 283 283 unsigned long stride, unsigned long offset); -
trunk/WebCore/platform/graphics/mac/GraphicsContext3DMac.cpp
r48310 r48325 649 649 } 650 650 651 void GraphicsContext3D::uniform1fv(long location, CanvasFloatArray* array)652 { 653 ensureContext(m_contextObj); 654 ::glUniform1fv(location, array->length(), static_cast<GLfloat*>(array->baseAddress()));651 void GraphicsContext3D::uniform1fv(long location, float* array, int size) 652 { 653 ensureContext(m_contextObj); 654 ::glUniform1fv(location, size, array); 655 655 } 656 656 … … 661 661 } 662 662 663 void GraphicsContext3D::uniform2fv(long location, CanvasFloatArray* array)663 void GraphicsContext3D::uniform2fv(long location, float* array, int size) 664 664 { 665 665 // FIXME: length needs to be a multiple of 2 666 666 ensureContext(m_contextObj); 667 ::glUniform2fv(location, array->length() / 2, static_cast<GLfloat*>(array->baseAddress()));667 ::glUniform2fv(location, size, array); 668 668 } 669 669 … … 674 674 } 675 675 676 void GraphicsContext3D::uniform3fv(long location, CanvasFloatArray* array)676 void GraphicsContext3D::uniform3fv(long location, float* array, int size) 677 677 { 678 678 // FIXME: length needs to be a multiple of 3 679 679 ensureContext(m_contextObj); 680 ::glUniform3fv(location, array->length() / 3, static_cast<GLfloat*>(array->baseAddress()));680 ::glUniform3fv(location, size, array); 681 681 } 682 682 … … 687 687 } 688 688 689 void GraphicsContext3D::uniform4fv(long location, CanvasFloatArray* array)689 void GraphicsContext3D::uniform4fv(long location, float* array, int size) 690 690 { 691 691 // FIXME: length needs to be a multiple of 4 692 692 ensureContext(m_contextObj); 693 ::glUniform4fv(location, array->length() / 4, static_cast<GLfloat*>(array->baseAddress()));693 ::glUniform4fv(location, size, array); 694 694 } 695 695 … … 700 700 } 701 701 702 void GraphicsContext3D::uniform1iv(long location, CanvasIntArray* array)703 { 704 ensureContext(m_contextObj); 705 ::glUniform1iv(location, array->length(), static_cast<GLint*>(array->baseAddress()));702 void GraphicsContext3D::uniform1iv(long location, int* array, int size) 703 { 704 ensureContext(m_contextObj); 705 ::glUniform1iv(location, size, array); 706 706 } 707 707 … … 712 712 } 713 713 714 void GraphicsContext3D::uniform2iv(long location, CanvasIntArray* array)714 void GraphicsContext3D::uniform2iv(long location, int* array, int size) 715 715 { 716 716 // FIXME: length needs to be a multiple of 2 717 717 ensureContext(m_contextObj); 718 ::glUniform2iv(location, array->length() / 2, static_cast<GLint*>(array->baseAddress()));718 ::glUniform2iv(location, size, array); 719 719 } 720 720 … … 725 725 } 726 726 727 void GraphicsContext3D::uniform3iv(long location, CanvasIntArray* array)727 void GraphicsContext3D::uniform3iv(long location, int* array, int size) 728 728 { 729 729 // FIXME: length needs to be a multiple of 3 730 730 ensureContext(m_contextObj); 731 ::glUniform3iv(location, array->length() / 3, static_cast<GLint*>(array->baseAddress()));731 ::glUniform3iv(location, size, array); 732 732 } 733 733 … … 738 738 } 739 739 740 void GraphicsContext3D::uniform4iv(long location, CanvasIntArray* array)740 void GraphicsContext3D::uniform4iv(long location, int* array, int size) 741 741 { 742 742 // FIXME: length needs to be a multiple of 4 743 743 ensureContext(m_contextObj); 744 ::glUniform4iv(location, array->length() / 4, static_cast<GLint*>(array->baseAddress()));745 } 746 747 void GraphicsContext3D::uniformMatrix2fv(long location, bool transpose, CanvasFloatArray* array)744 ::glUniform4iv(location, size, array); 745 } 746 747 void GraphicsContext3D::uniformMatrix2fv(long location, bool transpose, float* array, int size) 748 748 { 749 749 // FIXME: length needs to be a multiple of 4 750 750 ensureContext(m_contextObj); 751 ::glUniformMatrix2fv(location, array->length() / 4, transpose, static_cast<GLfloat*>(array->baseAddress()));752 } 753 754 void GraphicsContext3D::uniformMatrix3fv(long location, bool transpose, CanvasFloatArray* array)751 ::glUniformMatrix2fv(location, size, transpose, array); 752 } 753 754 void GraphicsContext3D::uniformMatrix3fv(long location, bool transpose, float* array, int size) 755 755 { 756 756 // FIXME: length needs to be a multiple of 9 757 757 ensureContext(m_contextObj); 758 ::glUniformMatrix3fv(location, array->length() / 9, transpose, static_cast<GLfloat*>(array->baseAddress()));759 } 760 761 void GraphicsContext3D::uniformMatrix4fv(long location, bool transpose, CanvasFloatArray* array)758 ::glUniformMatrix3fv(location, size, transpose, array); 759 } 760 761 void GraphicsContext3D::uniformMatrix4fv(long location, bool transpose, float* array, int size) 762 762 { 763 763 // FIXME: length needs to be a multiple of 16 764 764 ensureContext(m_contextObj); 765 ::glUniformMatrix4fv(location, array->length() / 16, transpose, static_cast<GLfloat*>(array->baseAddress()));765 ::glUniformMatrix4fv(location, size, transpose, array); 766 766 } 767 767 … … 790 790 } 791 791 792 void GraphicsContext3D::vertexAttrib1fv(unsigned long indx, CanvasFloatArray* array)793 { 794 ensureContext(m_contextObj); 795 ::glVertexAttrib1fv(indx, static_cast<GLfloat*>(array->baseAddress()));792 void GraphicsContext3D::vertexAttrib1fv(unsigned long indx, float* array) 793 { 794 ensureContext(m_contextObj); 795 ::glVertexAttrib1fv(indx, array); 796 796 } 797 797 … … 802 802 } 803 803 804 void GraphicsContext3D::vertexAttrib2fv(unsigned long indx, CanvasFloatArray* array)805 { 806 ensureContext(m_contextObj); 807 ::glVertexAttrib2fv(indx, static_cast<GLfloat*>(array->baseAddress()));804 void GraphicsContext3D::vertexAttrib2fv(unsigned long indx, float* array) 805 { 806 ensureContext(m_contextObj); 807 ::glVertexAttrib2fv(indx, array); 808 808 } 809 809 … … 814 814 } 815 815 816 void GraphicsContext3D::vertexAttrib3fv(unsigned long indx, CanvasFloatArray* array)817 { 818 ensureContext(m_contextObj); 819 ::glVertexAttrib3fv(indx, static_cast<GLfloat*>(array->baseAddress()));816 void GraphicsContext3D::vertexAttrib3fv(unsigned long indx, float* array) 817 { 818 ensureContext(m_contextObj); 819 ::glVertexAttrib3fv(indx, array); 820 820 } 821 821 … … 826 826 } 827 827 828 void GraphicsContext3D::vertexAttrib4fv(unsigned long indx, CanvasFloatArray* array)829 { 830 ensureContext(m_contextObj); 831 ::glVertexAttrib4fv(indx, static_cast<GLfloat*>(array->baseAddress()));828 void GraphicsContext3D::vertexAttrib4fv(unsigned long indx, float* array) 829 { 830 ensureContext(m_contextObj); 831 ::glVertexAttrib4fv(indx, array); 832 832 } 833 833
Note: See TracChangeset
for help on using the changeset viewer.