我有一个Paint对象,并且尝试使用绘制一个Arc Gradient canvas.drawArc,但唯一的方法(至少根据我的研究)是使用a Shader,但是Shader要从一个Gradient对象获取a ,则必须use Gradient.createShader(Rect rect),它采用一个矩形。我的问题是,有没有办法为弧形而不是矩形创建着色器?到目前为止,这里可供我参考:
Paint paint = new Paint()
..color = bgColor
..strokeCap = StrokeCap.round
..strokeWidth = 3.0
..style = PaintingStyle.stroke
..shader = new Gradient.radial(size.width / 2.0, size.height / 2.0, size.height / 3.0, Colors.transparent, timerColor, TileMode.mirror).createShader(/* I don't have a rect object */);
canvas.drawArc(..., paint);
Run Code Online (Sandbox Code Playgroud) 我正在使用cl-opengl在lisp中编写一个对象加载器,当尝试使用时渲染加载的顶点/元素时glDrawElements,我留下了一个空白屏幕.
(require :cl-opengl)
(require :sdl2)
(defvar *vertices* nil)
(defvar *elements* nil)
(setf *vertices* (make-array 9 :fill-pointer 0))
(setf *elements* (make-array 9 :fill-pointer 0))
(defvar *vertex-shader* "
#version 330 core
layout (location = 0) in vec3 aPos;
void main() {
gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);
}
")
(defvar *fragment-shader* "
#version 330 core
out vec4 FragColor;
void main() {
FragColor = vec4(0.95f, 0.98f, 0.65f, 1.0f);
}
")
(defun split-str-1 (string &optional (separator " ") (r nil))
(let ((n …Run Code Online (Sandbox Code Playgroud)