小编Rei*_*ica的帖子

英特尔和Nvidia之间的OpenGL fbo blitting不一致

我将OpenGL中的场景以低分辨率渲染到帧缓冲区中.然后我打算将这个版本绘制到整个屏幕上(用GL_NEAREST进行升级).我使用纹理blitting(glBlitFramebuffer)来做到这一点.在我的Nvidia GPU上,这可以工作,但是当我在Intel i7集成显卡上执行完全相同的代码时,目标帧缓冲区上的y位置似乎是错误的(即图像渲染得太远了).

glGetError没有返回错误.由于Nvidia的驱动程序往往非常宽容,我希望我错过了Nvidia不关心的OpenGL规范中的细节.我搜索了互联网和stackoverflow,无法找到描述的类似问题.两位司机都报告支持OpenGL 3.0

我的绘图代码:

//setup viewport for small image
glPushAttrib(GL_VIEWPORT_BIT);
glViewport(0, 0, image.getWidth(), image.getHeight());

//bind small framebuffer
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);
glDrawBuffers(GL_COLOR_ATTACHMENT0);
glClear(GL_COLOR_BUFFER_BIT);

//draw
renderRotatedFull(1);//nothing interesting at all happening here

//reset Viewport
glPopAttrib();

//prepare and execute blitting
glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo);
glReadBuffer(GL_COLOR_ATTACHMENT0);

glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
glDrawBuffers(GL_BACK_LEFT);

glBlitFramebuffer(0, 0, image.getWidth(), image.getHeight(), 0, 0, Game.width,
    Game.height, GL_COLOR_BUFFER_BIT, GL_NEAREST);

glBindFramebuffer(GL_FRAMEBUFFER, 0);

//throws exception if there is an OpenGL error
org.lwjgl.opengl.Util.checkGLError();
Run Code Online (Sandbox Code Playgroud)

初始化完成如下:

fbo =glGenFramebuffers();
glBindFramebuffer(GL_FRAMEBUFFER, fbo);

rbo = glGenRenderbuffers();
glBindRenderbuffer(GL_RENDERBUFFER, rbo);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8, image.getWidth(), image.getHeight());
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, …
Run Code Online (Sandbox Code Playgroud)

java opengl fbo lwjgl opengl-3

15
推荐指数
1
解决办法
889
查看次数

如何将要注入的当前活动传递给 Dagger2 中的对象

假设我有一个这样A定义的类:

class A {

    Activity c;

    public A(Activity c) {
        this.c = c;
        // do something
    }

    public void dosomething() { }

}
Run Code Online (Sandbox Code Playgroud)

我有一个这样定义的活动:

public class MyActivity extends AppCompatActivity {

    @Inject A myObject;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myObject.dosomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

如何为我的对象提供当前活动?

java android dependency-injection dagger-2

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

标签 统计

java ×2

android ×1

dagger-2 ×1

dependency-injection ×1

fbo ×1

lwjgl ×1

opengl ×1

opengl-3 ×1