gltext.py 文件源码

python
阅读 17 收藏 0 点赞 0 评论 0

项目:python-gltf-experiments 作者: jzitelli 项目源码 文件源码
def draw_text(self, text, color=(1.0, 1.0, 1.0, 0.0),
                  view_matrix=None, projection_matrix=None):
        gl.glUseProgram(self._program_id)
        gl.glActiveTexture(gl.GL_TEXTURE0+0)
        gl.glBindTexture(gl.GL_TEXTURE_2D, self._texture_id)
        gl.glBindSampler(0, self._sampler_id)
        gl.glUniform1i(self._uniform_locations['u_fonttex'], 0)
        gl.glUniform4f(self._uniform_locations['u_color'], *color)
        if view_matrix is not None:
            self._matrix.dot(view_matrix, out=self._modelview_matrix)
            gl.glUniformMatrix4fv(self._uniform_locations['u_modelviewMatrix'], 1, False, self._modelview_matrix)
        if projection_matrix is not None:
            gl.glUniformMatrix4fv(self._uniform_locations['u_projectionMatrix'], 1, False, projection_matrix)
        gl.glEnableVertexAttribArray(0)
        gl.glEnableVertexAttribArray(1)
        gl.glEnable(gl.GL_BLEND)
        gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)
        x = 0.0
        text = [ord(c) - 32 for c in text]
        for i in text:
            if i >= 0 and i < 95:
                gl.glBindBuffer(gl.GL_ARRAY_BUFFER, self._buffer_ids[i])
                gl.glVertexAttribPointer(0, 2, gl.GL_FLOAT, False, 0, c_void_p(0))
                gl.glVertexAttribPointer(1, 2, gl.GL_FLOAT, False, 0, c_void_p(8*4))
                gl.glUniform1f(self._uniform_locations['advance'], x)
                gl.glDrawArrays(gl.GL_TRIANGLE_STRIP, 0, 4)
                x += self._advance[i]
        gl.glDisableVertexAttribArray(0)
        gl.glDisableVertexAttribArray(1)
        gl.glDisable(gl.GL_BLEND)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号