Opengl es 根据中心点和尺寸绘制GL_三角形_条

Opengl es 根据中心点和尺寸绘制GL_三角形_条,opengl-es,opengl-es-2.0,vertex-shader,Opengl Es,Opengl Es 2.0,Vertex Shader,我正在OpenGL ES 2.0中渲染三角形带。我想知道,是否可以修改顶点着色器,使其不提供4个纹理顶点,而只提供一个表示三角形_带中心的顶点,并带有纹理宽度和高度参数 假设我的纹理顶点为: GLfloat textureVertices[] = { x, y }; 顶点着色器是否可以修改为使用texSizeuniform,它将表示三角形条带的宽度/高度 attribute highp vec4 position; attribute lowp vec4 inputPointCoor

我正在OpenGL ES 2.0中渲染三角形带。我想知道,是否可以修改顶点着色器,使其不提供4个纹理顶点,而只提供一个表示三角形_带中心的顶点,并带有纹理宽度和高度参数

假设我的纹理顶点为:

GLfloat textureVertices[] = {
    x, y
}; 
顶点着色器是否可以修改为使用
texSize
uniform,它将表示三角形条带的宽度/高度

attribute highp vec4 position;
attribute lowp vec4 inputPointCoordinate;
uniform mat4 MVP;
uniform lowp vec4 vertexColor;
uniform float texSize;

varying lowp vec2 textureCoordinate;
varying lowp vec4 color;

void main()
{
    gl_Position = MVP*position;
    textureCoordinate = inputPointCoordinate.xy;
    color = vertexColor;
}

不,至少不在顶点着色器中。您需要在顶点着色器中获得具有不同属性值的3个不同点,以便可以在插值的片段着色器中接收坐标

实际上,您可以将一个中心传递到顶点着色器中,该着色器与顶点坐标相同的矩阵相乘。除此之外,还需要某种半径(或纹理维度向量),如果矩阵也包含缩放,则可能需要对其进行缩放。然后,您可以获取这两个值并将它们传递给片段着色器(使用“变化”)。在片段着色器中,然后需要根据这2个参数和片段位置计算纹理坐标


simular程序用于仅使用2个三角形(一个正方形)绘制一个非常漂亮的圆或球体,但我不建议您这样做,因为这样做只会降低性能,而且工作量很大……

您知道关于如何进行此操作的教程吗?我一直在寻找,但没有成功。或者你可以提供一些示例代码?试试看这篇文章:虽然这里没有考虑矩阵,但是你应该能够轻松地处理这个问题。。。