簡體   English   中英

JOGL-向對象添加紋理-僅黑色對象

[英]JOGL - Add Texture to Object - Only black object

如何在Java Open GL(特別是對於AndAR)中向對象添加紋理...代碼有什么問題? 我讀了一些示例,但總是一樣,只有“黑色矩形”或紋理綁定在背景上。如何將其綁定到矩形上?

這是我的代碼:

  int[] textureIDs = new int[1];
    gl.glEnable(GL10.GL_TEXTURE_2D);

    gl.glGenTextures(1, textureIDs, 0);
    //load the textures into the graphics memory


    Bitmap bm = BitmapFactory.decodeResource(CustomActivity.context.getResources(), R.drawable.icon);

    gl.glBindTexture(GL10.GL_TEXTURE_2D, textureIDs[0]);
    GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bm,0);
    gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
    gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);




    GLUT.glutSolidBox(gl,200.0f,100.0f,10.0f);

為了使texturinh發揮作用,您將需要紋理坐標,它們告訴GL紋理的哪個部分要映射到基元的哪些部分。 由於您正在使用固定功能管道,因此有兩個選項:

  1. 為幾何圖元提供每個頂點的紋理坐標,或者
  2. 使用自動紋理坐標生成。

GLUT對象從不提供任何紋理坐標。 這意味着OpenGL將為每個頂點使用當前設置的紋理坐標。 這將導致僅對特定於uni的紋理位置進行一次又一次的采樣-它不一定是黑色的,但是您的對象將被均勻地着色。

您可能會很想選擇選項2,然后選擇自動紋理坐標生成,這由`glTexGen()系列函數控制。 但是,可用的紋理坐標生成模式都不適合對立方體進行紋理處理。

因此,唯一真正的解決方案是手動指定立方體頂點,並指定有用的紋理坐標。 您從未指定所需的映射。 紋理是一個矩形圖像,您可以將其映射到每個人的臉,我們可能希望將圖像的另一個子矩形映射到每側-並且您必須告訴GL如何映射它,它不能猜想是因為您繪制了6張面並啟用了紋理。

或紋理綁定在背景上。

要繪制非紋理時,需要再次禁用紋理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM