小编Cur*_*ain的帖子

OpenGL纹理透明度不起作用

我有一个绑定到简单四边形的OpenGL纹理.

我的问题是:我的纹理是128x128像素的图像.我只在该图像上填充大约100x60像素,其他像素是透​​明的.我把它保存在.png文件中.当我画画时,绑定纹理的透明部分是白色的.

假设我有背景.当我在这个背景上绘制这个新的四边形时,我看不到透过纹理的透明部分.

有什么建议?

码:

// Init code...
gl.glEnable(gl.GL_TEXTURE_2D);
gl.glDisable(gl.GL_DITHER);
gl.glDisable(gl.GL_LIGHTING);   
gl.glDisable(gl.GL_DEPTH_TEST);

gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_MODULATE); 

// Drawing code...
gl.glBegin(gl.GL_QUADS);
gl.glTexCoord2d(0.0, 0.0);
gl.glVertex3f(0.0f, 0.0f, 0.0f);
gl.glTexCoord2d(1.0, 0.0);
gl.glVertex3f(1.0f, 0.0f, 0.0f);
gl.glTexCoord2d(1.0, 1.0);
gl.glVertex3f(1.0f, 1.0f, 0.0f);
gl.glTexCoord2d(0.0, 1.0);
gl.glVertex3f(0.0f, 1.0f, 0.0f);
gl.glEnd();
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几乎所有的东西,从启用混合到更改到GL_REPLACE,但是我无法让它工作.

编辑:

// Texture. Have tested both gl.GL_RGBA and gl.GL_RGB8.
gl.glTexImage2D(gl.GL_TEXTURE_2D, 0, (int)gl.GL_RGBA, imgWidth, imgHeight,
            0, gl.GL_BGR_EXT, gl.GL_UNSIGNED_BYTE, bitmapdata.Scan0);
Run Code Online (Sandbox Code Playgroud)

opengl textures

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

通过Intent将cookie传递给浏览器

我在android中保存了一个cookie.现在我想把它传递给我的浏览器意图.看看我目前的代码:

Intent browser = new Intent("android.intent.action.VIEW",
                            Uri.parse("http://mypage.php/memberpagethatrequireacookie.php"));
//putExtra cannot take these arguments -> browser.putExtra("org.apache.http.cookie.Cookie", cookie);
startActivity(browser);
Run Code Online (Sandbox Code Playgroud)

我希望它暂时存储在我的浏览器中,以便我的成员页面成功加载.我的cookie是从HTTP请求成功创建的,List<Cookie> cookie; 如果我应该提供更多代码,我将它分配给一个告诉我.

有任何想法吗?提前致谢!

java android

10
推荐指数
2
解决办法
8795
查看次数

OpenGL雾与OpenGL ES雾

我有一个问题,即雾在使用OpenGL的桌面程序(PC)上工作,但同样的雾不能像在Android设备上那样工作(使用OpenGL ES).

代码完全相同,看起来像这样:

// OpenGL ES Init
gl.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
float fogColor[] = {0.5, 0.5, 0.5, 1.0};
// Fog color to mFogBuffer...
gl.glEnable(GL10.GL_FOG);
gl.glFogfv(GL10.GL_FOG_COLOR, mFogBuffer);
gl.glFogf(GL10.GL_FOG_DENSITY, 0.04f);

// OpenGL Init
glClearColor(0.5, 0.5, 0.5, 1.0);
float fogColor[] = {0.5, 0.5, 0.5, 1.0};
glEnable(GL_FOG);
glFogfv(GL_FOG_COLOR, fogColor);
glFogf(GL_FOG_DENSITY, 0.04f);
Run Code Online (Sandbox Code Playgroud)

但是我无法在我的Android设备上使OpenGL雾完全相同.我测试了glShadeModel()属性等等.

应该雾的区域是完全白色的,它是一个基本的四边形(由三角形构建).我做了一些gluLookAt()改造,但它不应该影响这种雾.

有任何想法吗?

opengl opengl-es

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

错误的图像显示在我的ListView行中

我在getView中使用此代码:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    if (v == null) {

        LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.listrow, null);
    }
    Order o = items.get(position);

    if (o != null) {
        TextView tt = (TextView) v.findViewById(R.id.toptext);
        ImageView thumb = (ImageView) v.findViewById(R.id.icon);

        if (o.getOrderDrawable() != null) {
            thumb.setImageDrawable(o.getOrderDrawable());
        } else {
            tt.setText(o.getOrderTitle());
        }

    }
    return v;
}
Run Code Online (Sandbox Code Playgroud)

问题是滚动时; 有时会显示正确的图像,但有时向后/向前滚动时,图像会随机显示,并且与行无关.

图像从网上下载.

我该如何解决这个问题?

android listview

7
推荐指数
1
解决办法
6528
查看次数

lockCanvas是什么意思(精心设计)

我一直在Android中绘制图形.那里有很多示例应用程序,但我总能看到的一件事是lockCanvas.有人可以解释得更近,因为我真的没有得到它,也因为我认为理解未来的编程很重要吗?

一个例子:

try { 
    c = panel_thread.getHolder().lockCanvas(null);
    synchronized (panel_thread.getHolder()) {
        panel_thread.update();
        panel_thread.onDraw(c);
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我现在所拥有的.我该怎么解释这个?同步做什么?为什么将canvas-object分配到getHolder和lockCanvas很重要?

这部分也令人困惑:

panel_thread.getHolder().unlockCanvasAndPost(c);
Run Code Online (Sandbox Code Playgroud)

为什么这有必要?我真的需要一个更细致的解释.:)

android android-canvas

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

如何正确过滤ListView中的文本?

我试图从我的EditText框中过滤我的ListView,但是目前它没有用.

我有一个正确获取数据的ListView,它们使用ArrayAdapter类和我自己的ArrayList类添加到我自己的ListView中.例如,当我输入"table"时,我希望它从我的ListView中加载的标题中排序,而不是它应该显示剩下的项目和匹配表.

我目前的代码:

private ArrayList<Order> orders; /* ArrayList class with my own Order class to 
define title, info etc. */
private OrderAdapter adapter; //Own class that extends ArrayAdapter

orders = new ArrayList<Order>();
adapter = new OrderAdapter(this, R.layout.listrow, orders); /* listrow defining a
single item in my ListView */
setListAdapter(adapter); //Set our adapter to a ListView

search.addTextChangedListener(filterTextWatcher); //search is my EditText

private TextWatcher filterTextWatcher = new TextWatcher() {

    public void afterTextChanged(Editable s) {

    }

    public void beforeTextChanged(CharSequence s, int start, int …
Run Code Online (Sandbox Code Playgroud)

search android filter

6
推荐指数
1
解决办法
5262
查看次数

Java - 什么是<>使用的,它的名字是什么?

我正在研究一些示例代码然后出现了:

public abstract class RandomPool<T> extends Pool {
     //Class...
}
Run Code Online (Sandbox Code Playgroud)

什么<>用的?为什么只是T在这些内部?对我来说这似乎是随机的.但是,如何在更长的制作程序的角度使用它呢?

谢谢,告诉我是否需要添加更多细节!

java generics

6
推荐指数
1
解决办法
338
查看次数

关于变量名称的有趣细节

我已经阅读了整个网络上的教程,并在游戏中指定了不同类型的教程(但事实证明这很普遍).

是否有任何理由为什么许多开发人员将他们的变量命名为:

mContext
Run Code Online (Sandbox Code Playgroud)

对我来说,默认只是将其命名为"上下文"或类似的东西.

之前有"m"的原因吗?(我知道这是一个风格问题,但我只是好奇它代表什么)

android coding-style hungarian-notation

5
推荐指数
2
解决办法
1712
查看次数

如何选择标准的Android菜单图标?

我想根据手机运行的当前Android版本选择标准的Android菜单图标.

示例图标:

在此输入图像描述

记得!我不想为此目的绘制drawable,我确实想要基于设备API的正确图标.

这可能吗?

android

4
推荐指数
1
解决办法
8016
查看次数

改进粒子系统OpenGL

我正在寻找一种方法来提高我的粒子系统性能,因为它在FPS方面非常昂贵.这是因为我打电话:

glDrawElements(GL_TRIANGLE_STRIP, mNumberOfIndices,
          GL_UNSIGNED_SHORT, 0);
Run Code Online (Sandbox Code Playgroud)

我为我的应用程序中的每个粒子(可能在1000到5000个粒子之间)调用此方法.请注意,当增加到超过1000个粒子时,我的应用程序开始在FPS中下降.我正在使用VBO:s,但调用此方法时的性能太高.

任何想法如何使粒子系统更有效?

编辑:这是我的粒子系统绘制的东西:

glBindTexture(GL_TEXTURE_2D, textureObject);
glBindBuffer(GL_ARRAY_BUFFER, vboVertexBuffer[0]);
glVertexPointer(3, GL_FLOAT, 0, 0);
glBindBuffer(GL_ARRAY_BUFFER, vboTextureBuffer[0]);
glTexCoordPointer(2, GL_FLOAT, 0, 0); 
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vboIndexBuffer[0]);

Vector3f partPos;

for (int i = 0; i < m_numParticles; i++) {
    partPos = m_particleList[i].m_pos;          
    glTranslatef(partPos.x, partPos.y, partPos.z);
    glDrawElements(GL_TRIANGLE_STRIP, mNumberOfIndices, 
        GL_UNSIGNED_SHORT, 0);
    gl.glTranslatef(-partPos.x, -partPos.y, -partPos.z);
}
Run Code Online (Sandbox Code Playgroud)

opengl opengl-es

4
推荐指数
1
解决办法
2788
查看次数