2014-09-09 1 views
1

Я делаю Android приложение, чтобы добавить строку как заголовок, который, как это, например:Как добавить некоторые пиксели текстуры в OpenGL ES

Header

(это линия некоторых цветные пиксели, это был своего рода увеличено)

на левом верхнем углу этого:

Main texture

Я не знаю, если это possibl e, чтобы добавить некоторые пиксели поверх текстуры с OpenGL или нет. Или мы должны положить его в растровое изображение, загрузить его в текстуру, а затем объединить его с основной текстурой.

+0

Вы пытаетесь изменить текстуру с помощью этих пикселей? Или просто нарисуйте их поверх текстуры после рендеринга текстуры? В первом случае 'glTexSubImage2D()' должен делать трюк. В противном случае вы можете определить новую текстуру с дополнительными пикселями. –

+0

@RetoKoradi, пожалуйста, напишите свой полный ответ в первом случае с тривиальным примером кода, чтобы я мог его принять. – Harry

ответ

1

Чтобы нарисовать ряд пикселей, лучший способ - создать текстуру из них, а затем нарисовать их точно так же, как и любую другую текстуру. В зависимости от конкретного прецедента, есть, по крайней мере, два подход:

  1. Если вы всегда хотите, чтобы сделать эту строку пикселей поверх существующей текстуры, и в том же месте относительно исходного содержания текстуры, вы можете модифицируйте эту текстуру с помощью glTexSubImage2D(). Предположите, у вас есть массив байтов rowBytes, содержащий RGB-значения для строки nPixels пикселей, которые вы хотите добавить. Свяжите существующую текстуру, а затем вызвать:

    GLES20.glTexSubImage2D(GLES20.GL_TEXTURE_2D, 0, 0, 0, nPixels, 1, 
             GLES20.G_RBB, GLES20.GL_UNSIGNED_BYTE, 
             ByteBuffer.wrap(rowBytes)); 
    
  2. Создать новую текстуру для строки, используя стандартные вызовы, которые вы используете для любой другой текстуры (glGenTextures, glBindTexture, glTexImage2D). Только для одной строки пикселей укажите высоту как 1. Затем визуализируйте текстуру так же, как вы уже визуализируете существующие текстуры, что обычно представляет собой текстурированный квадрат для области, которую вы хотите покрыть.

Смежные вопросы