/// <summary> /// Convert an internal data type to a native gl one. /// </summary> /// <returns></returns> private VertexAttribType ToGLPointerType(DataType emotionDataType) { bool parsed = Enum.TryParse(emotionDataType.ToString(), out VertexAttribType nativeDataType); if (!parsed) { Engine.Log.Warning($"Couldn't parse data type - {emotionDataType}", MessageSource.GL); } return(nativeDataType); }
/// <inheritdoc /> public override void AttachDataBufferToVertexArray(uint dataBufferId, uint vertexArrayBufferId, uint shaderIndex, uint componentCount, DataType dataType, bool normalized, uint stride, IntPtr offset) { GLThread.ExecuteGLThread(() => { BindVertexArrayBuffer(vertexArrayBufferId); BindDataBuffer(dataBufferId); Gl.EnableVertexAttribArray(shaderIndex); CheckError($"after enabling vertex array attributes {shaderIndex}"); Gl.VertexAttribPointer(shaderIndex, (int)componentCount, ToGLPointerType(dataType), normalized, (int)stride, offset); CheckError($"after setting vertex array attribute {shaderIndex}"); }); }