小编gen*_*ult的帖子

Android OpenGl有什么跨度?

我正在学习opengl.

我来了一个像drawXXXXXXX这样的函数,其中一个参数是大步的......

我不知道用法,也不知道步幅的含义.

anyoe可以告诉我吗?

graphics android opengl-es

0
推荐指数
1
解决办法
446
查看次数

多个纹理单元 GLES 2.0 Android

尝试让 2 个纹理单元工作。

@Override
public void onDrawFrame(GL10 gl) {
    //Clear the Rendering Surface
    glClear(GL_COLOR_BUFFER_BIT);

    multiplyMM(viewProjectionMatrix, 0, projectionMatrix, 0, viewMatrix, 0);

    positionTableInScene();
    textureProgram.useProgram();
    textureProgram.setUniforms(modelViewProjectionMatrix, texture_b, texture_r);
    table.bindData(textureProgram);
    table.draw();
    ...
}
Run Code Online (Sandbox Code Playgroud)

纹理程序:

public class TextureShaderProgram extends ShaderProgram {
//Uniform locations
private final int uMatrixLocation;
private final int uTextureUnit0Location;
private final int uTextureUnit1Location;

//Attribute locations
private final int aPositionLocation;
private final int aTextureCoordinatesLocation;

public TextureShaderProgram(Context context){
    super(context, R.raw.texture_vertex_shader, R.raw.texture_fragment_shader);

    //Retrieve uniform locations for the shader program.
    uMatrixLocation = glGetUniformLocation(program, U_MATRIX);
    uTextureUnit0Location = glGetUniformLocation(program, …
Run Code Online (Sandbox Code Playgroud)

android opengl-es opengl-es-2.0

0
推荐指数
1
解决办法
1208
查看次数

如何在webgl中获取纹理?没有Canvas.toDataUrl()

我想从webgl获取纹理就像我getImageData()在画布上下文为2d时可以使用的那样.
我怎样才能获得webgl上下文的纹理?

javascript opengl-es webgl

0
推荐指数
1
解决办法
941
查看次数

如何使用鼠标在PyOpenGL中控制相机?

我们需要在python中制作3D游戏,所以在我的研究中我发现了PyOpenGL.经过一段时间的游戏,我变得难以理解如何移动相机.给我一些示例代码和解释.

python opengl mouse view pyopengl

0
推荐指数
1
解决办法
4254
查看次数

将自透明纹理渲染到帧缓冲区时的奇怪混合

我正在尝试将自透明纹理渲染到帧缓冲区,但我没有得到我猜到的东西:先前在帧缓冲区上渲染的所有东西都被忽略了,这个纹理与我清理主画布的颜色混合在一起.

这就是我想要的,但不使用framebuffers:

package test;

import com.badlogic.gdx.*;
import com.badlogic.gdx.graphics.*;
import com.badlogic.gdx.graphics.g2d.*;

public class GdxTest extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;


    @Override
    public void create () {
        batch = new SpriteBatch();
        Pixmap pixmap = new Pixmap(1, 1, Pixmap.Format.RGBA8888);
        pixmap.setColor(1, 1, 1, 1);
        pixmap.fillRectangle(0, 0, 1, 1);
        // Generating a simple 1x1 white texture
        img = new Texture(pixmap);
        pixmap.dispose();
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        batch.begin();
        batch.setColor(1, 1, 1, 1);
        batch.draw(img, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        batch.setColor(0, …
Run Code Online (Sandbox Code Playgroud)

opengl opengl-es libgdx

0
推荐指数
1
解决办法
410
查看次数

OpenGL索引VBO渲染

在尝试在OpenGL中绘制一个简单的正方形时,我得到一个完全黑屏.在创建缓冲区之前调用这些方法:

glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glOrtho(0.0f, windowX, windowY, 0.0f, 1000.0f, 0);
Run Code Online (Sandbox Code Playgroud)

我正在创建缓冲区,如下所示:

std::vector<unsigned int> indices;
std::vector<unsigned int> vertices;    

vertices.push_back(0);
vertices.push_back(0);
vertices.push_back(0);

vertices.push_back(100);
vertices.push_back(0);
vertices.push_back(0);

vertices.push_back(100);
vertices.push_back(100);
vertices.push_back(0);

vertices.push_back(0);
vertices.push_back(100);
vertices.push_back(0);


indices.push_back(0);
indices.push_back(1);
indices.push_back(2);

indices.push_back(2);
indices.push_back(3);
indices.push_back(0);

glGenBuffers(1, &verticesbuffer);
glBindBuffer(GL_ARRAY_BUFFER, verticesbuffer);
glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(vertices[0]), &vertices[0], GL_STATIC_DRAW);

glGenBuffers(1, &indicesbuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indicesbuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() * sizeof(indices[0]), &indices[0], GL_STATIC_DRAW);
Run Code Online (Sandbox Code Playgroud)

显示功能:

glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

glBindBuffer(GL_ARRAY_BUFFER, verticesbuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indicesbuffer);
glVertexPointer(3, GL_INT, 0, &vertices[0]);

glColor3f(1, 0, 0);

glEnableClientState(GL_VERTEX_ARRAY);

glDrawElements(GL_TRIANGLES, indices.size(), GL_UNSIGNED_INT, &indices[0]);

glDisableClientState(GL_VERTEX_ARRAY);

glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
Run Code Online (Sandbox Code Playgroud)

我已经开始使用AMD GPU …

c++ opengl vbo

0
推荐指数
1
解决办法
269
查看次数

如何将GLKMatrix4转换为GLfloat*数组?

我有一个GLKMatrix4变量,并希望使用它的函数GLfloat *arrayglUniformMatrix4fv.我用Google搜索但没有找到任何有用的信息.有一个CC3Matrix4x4PopulateFromGLKMatrix4在cocos3d SDK中调用的函数,但它回复的文件太多了.我真的不想用它.

有没有简单的方法来投GLKMatrix4GLfloat* array

opengl-es ios

0
推荐指数
1
解决办法
1332
查看次数

在 Boost::Geometry::Polygon 内查找点

我有一个Polygon对象,我正在寻找一种有效的方法来找到严格位于其内部(而不是其边界上)的任何点。最好的方法是什么?

我有以下想法,但我不太喜欢:

  1. 对多边形进行三角测量并报告三角测量边之一上的点(太昂贵)。
  2. 检查多边形的缠绕方向并报告位于距多边形边缘之一 epsilon 距离的点(在边缘情况下不起作用)。

c++ boost computational-geometry boost-geometry

0
推荐指数
1
解决办法
993
查看次数

将float数组传递给函数

我试图在OpenGL中加载VAO,但在运行时它不会绘制.当我将函数中的代码直接用于我的主循环时它运行正常,但每当我尝试通过我的函数加载VAO时它都不起作用.在将值传递给函数时,我已经将其缩小到出错的地方,因为当我直接使用float数组时,它确实有效.我在我的main函数中定义了一个静态float数组的值,我正在加载它:

GLuint RenderLoader::load(float vertices[])
{
    GLuint VertexArrayID;
    glGenVertexArrays(1, &VertexArrayID);
    glBindVertexArray(VertexArrayID);

    GLuint vertexbuffer;
    glGenBuffers(1, &vertexbuffer);
    glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
    return VertexArrayID;
}
Run Code Online (Sandbox Code Playgroud)

c++ arrays opengl

0
推荐指数
1
解决办法
634
查看次数

使用 SDL2 和 OpenGL 的非瞬时/急动运动

我一直在研究一个小的 3D 引擎,试图修复相机并使其不那么生涩。我一直在使用 SDL 作为输入,当它工作时,它正在做这件事,如果我按住一个按钮,它会立即移动一次然后暂停然后开始正确移动,使移动感觉没有反应。

我录制了它的 GIF 动图,虽然可能很难看出发生了什么,但希望它能给一些想法:

gif

向前移动然后向右移动就像:

w wwwwwwwwwwwwwwww aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

重要的代码在这里,但如有必要,请随时要求更多:

//Poll events
    SDL_Event event;
    while (m_EngineState != EngineState::EXIT)
    {
        m_last = m_current;
        m_current = SDL_GetPerformanceCounter();
        deltaTime = (double)((m_current - m_last) * 1000 / SDL_GetPerformanceFrequency());

        while (SDL_PollEvent(&event))
        {
            switch (event.type) {
            case SDL_QUIT:
                m_EngineState = EngineState::EXIT;
                break;

            case SDL_MOUSEMOTION:
                break;

            case SDL_KEYDOWN:
                m_Keys[event.key.keysym.sym] = true;
                break;
            case SDL_KEYUP:
                m_Keys[event.key.keysym.sym] = false;
                break;
            }
            ProcessEvents();
        }

void Engine::ProcessEvents()
{
    if (m_Keys[SDLK_w])
    {
        m_Camera->MoveForward(5.0f*(deltaTime*0.001));
    }
    if (m_Keys[SDLK_s])
    {
        m_Camera->MoveForward(-5.0f*(deltaTime*0.001));
    } …
Run Code Online (Sandbox Code Playgroud)

c++ opengl events camera sdl

0
推荐指数
1
解决办法
941
查看次数