相关疑难解决方法(0)

OpenGL ES 2.0中的纹理点?

我正在尝试在OpenGL ES 2.0中为粒子系统实现纹理点(例如点精灵).我遇到的问题是所有点都呈现为纯黑色方块,而不是正确映射纹理.

我已经验证了gl_PointCoord实际上将x/y值从0.0返回到1.0,这将映射整个纹理.尽管texture2D调用似乎总是返回黑色.

我的顶点着色器:

attribute vec4 aPosition;
attribute float aAlpha;
attribute float aSize;
varying float vAlpha;
uniform mat4 uMVPMatrix;

void main() {
  gl_PointSize = aSize;
  vAlpha = aAlpha;
  gl_Position = uMVPMatrix * aPosition;
}
Run Code Online (Sandbox Code Playgroud)

我的片段着色器:

precision mediump float;
uniform sampler2D tex;
varying float vAlpha;

void main () {
    vec4 texColor = texture2D(tex, gl_PointCoord);
    gl_FragColor = vec4(texColor.rgb, texColor.a * vAlpha);
}
Run Code Online (Sandbox Code Playgroud)

有问题的纹理是16x16.我能够成功地将此纹理映射到其他几何体,但由于某种原因不能指向.

我的平台是摩托罗拉Droid,运行Android 2.2.

opengl-es point glsl sprite

9
推荐指数
1
解决办法
1万
查看次数

OpenGL点在片段着色器中精灵旋转

我正在学习本教程,以了解更多关于OpenGL,特别是点精灵的内容.但是我坚持在页面末尾的一个练习中:

尝试通过更改片段着色器将点精灵旋转45度.

在本章中以及之前的章节中没有关于此类事情的提示.我没有找到任何关于如何做的文档.这些是我的顶点和片段着色器:

顶点着色器

#version 140

attribute vec2 coord2d;

varying vec4 f_color;

uniform float offset_x;
uniform float scale_x;
uniform float point_size;

void main(void) {
    gl_Position = vec4((coord2d.x + offset_x) * scale_x, coord2d.y, 0.0, 1.0);
    f_color = vec4(coord2d.xy / 2.0 + 0.5, 1.0, 1.0);
    gl_PointSize = point_size;
}
Run Code Online (Sandbox Code Playgroud)

片段着色器

#version 140

varying vec4 f_color;

uniform sampler2D texture;

void main(void) {
    gl_FragColor = texture2D(texture, gl_PointCoord) * f_color;
}
Run Code Online (Sandbox Code Playgroud)

我想在FS中使用2x2矩阵来旋转gl_PointCoord,但我不知道如何填充矩阵来完成它.我应该把它作为制服直接传递给FS吗?

c++ opengl glsl

5
推荐指数
1
解决办法
8194
查看次数

opengl z-sorting透明度

我在opengl es 2.0中的简单方块上渲染png,但是当我尝试在正方形后面绘制一些东西时,我已经绘制了我的顶部正方形中的透明区域呈现与背景相同的颜色.

我在每个渲染调用的开头调用它们.

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glEnable (GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Run Code Online (Sandbox Code Playgroud)

opengl transparency depth-buffer

1
推荐指数
3
解决办法
5742
查看次数

标签 统计

glsl ×2

opengl ×2

c++ ×1

depth-buffer ×1

opengl-es ×1

point ×1

sprite ×1

transparency ×1