我想用GLSL,Java和openGl开始一个延迟着色项目
1.延迟渲染管道如何工作,是否为每个图像渲染场景?例如,当我想创建一个镜面反射,模糊和阴影纹理时,是否需要为每个纹理渲染场景.
我见过一些代码片段,那里没有多个渲染循环.
2.什么是几何缓冲区,它有什么作用?它是否类似于场景数据的存储,我可以绘制到纹理而不再渲染?
我需要弄清楚如何计算一条线的哪一侧.我正在寻找一种非常快速和简单的碰撞算法,因为我只需要知道对象在哪一侧定义碰撞状态.
就像:
if(x > line.x)
return EnumSide.LEFT;
Run Code Online (Sandbox Code Playgroud)
但该线需要对角线.有任何想法吗?
我m working on a program which should have multiple views of a model. I would like to use multiple为此GLControls`。
是否有可能创建使用相同GraphicsContext的多个GLControl?
我在多线程环境中成功创建了此环境,但是当时不共享上下文。所以我必须为每个上下文加载模型,这很糟糕。
我对单线程环境的伪代码如下所示:
glControl1.MakeCurrent();
// Render here
glControl1.SwapBuffers();
glControl2.MakeCurrent();
// Render here too
glControl2.SwapBuffers();
Run Code Online (Sandbox Code Playgroud)
我通过在线程上创建多个上下文来尝试此操作,但是它崩溃了
错误:170“”在“ MakeCurrent()
的glControl2。(即使glControl2.Context.MakeCurrent(null)在切换上下文之前也没有用)
也许您有一些提示可以帮助我。
我试图实现位图字体渲染.唯一令我困惑的是,我必须在这里问一下,当我为每个焦点绘制四边形时,每次渲染一个新的四边形时,UV都绝对会被破坏.如果我只渲染一个四边形,一切都OK.
(瓦片x = 3,y = 4)
这是多少字母的样子.

这是我的代码来渲染这些东西:
...
rc.translate(getTransform().getPos());
drawTileAt(3, 4);
rc.translate(100, 0, 0);
drawTileAt(5, 5);
rc.translate(200, 0, 0);
drawTileAt(2,6);
rc.translate(300,0,0);
drawTileAt(1, 7);
...
public void drawTileAt(int x, int y)
{
float w = 1f / 16f;
float _x = 1f / 16f * x;
float _y = 1f / 16f * y;
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex2f(0, 100);GL11.glTexCoord2f(_x,_y);
GL11.glVertex2f(0, 0);GL11.glTexCoord2f(_x + w,_y);
GL11.glVertex2f(100,0);GL11.glTexCoord2f(_x + w,_y + w);
GL11.glVertex2f(100, 100);
GL11.glTexCoord2f(_x,_y + w);
GL11.glEnd();
}
Run Code Online (Sandbox Code Playgroud)
我也用tex-coords绘制VBO四边形,一切看起来都很好......