【libGDX】Mesh紋理貼圖

1 前言

? ? ? ? 紋理貼圖的本質是將圖片的紋理坐標與模型的頂點坐標建立一一映射關系。紋理坐標的 x、y 軸正方向分別朝右和朝下,如下。

2 紋理貼圖

????????本節將使用?Mesh、ShaderProgram、Shader 實現紋理貼圖,OpenGL ES 的實現見博客 →?紋理貼圖。

????????DesktopLauncher.java

package com.zhyan8.game;import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
import com.zhyan8.game.Chartlet;public class DesktopLauncher {public static void main (String[] arg) {Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();config.setForegroundFPS(60);config.setTitle("Chartlet");new Lwjgl3Application(new Chartlet(), config);}
}

????????Chartlet.java

package com.zhyan8.game;import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL30;
import com.badlogic.gdx.graphics.Mesh;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.VertexAttribute;
import com.badlogic.gdx.graphics.VertexAttributes.Usage;
import com.badlogic.gdx.graphics.glutils.ShaderProgram;public class Chartlet extends ApplicationAdapter {private ShaderProgram mShaderProgram;private Mesh mMesh;private Texture mTexture;@Overridepublic void create() {initShader();initMesh();mTexture = new Texture(Gdx.files.internal("textures/girl.jpg"));}@Overridepublic void render() {Gdx.gl.glClearColor(0.455f, 0.725f, 1.0f, 1.0f);Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);mShaderProgram.bind();// mShaderProgram.setUniformi("u_texture", 0); // 設置紋理單元mTexture.bind(0);mMesh.render(mShaderProgram, GL30.GL_TRIANGLE_FAN);}@Overridepublic void dispose() {mShaderProgram.dispose();mMesh.dispose();}private void initShader() { // 初始化著色器程序String vertex = Gdx.files.internal("shaders/chartlet_vertex.glsl").readString();String fragment = Gdx.files.internal("shaders/chartlet_fragment.glsl").readString();mShaderProgram = new ShaderProgram(vertex, fragment);}private void initMesh() { // 初始化網格float[] vertices = {-1f, -1f, 0f, 0f, 1f, // 左下1f, -1f, 0f, 1f, 1f, // 右下1f, 1f, 0f, 1f, 0f, // 右上-1f, 1f, 0f, 0f, 0f // 左上};short[] indices = {0, 1, 2, 3};VertexAttribute vertexPosition = new VertexAttribute(Usage.Position, 3, "a_position");VertexAttribute texCoords = new VertexAttribute(Usage.TextureCoordinates, 2, "a_texCoord0");mMesh = new Mesh(true, vertices.length / 5, indices.length, vertexPosition, texCoords);mMesh.setVertices(vertices);mMesh.setIndices(indices);}
}

?????????chartlet_vertex.glsl

#version 300 esin vec3 a_position;
in vec2 a_texCoord0;out vec2 v_texCoord0;void main() {gl_Position = vec4(a_position, 1.0);v_texCoord0 = a_texCoord0;
}

????????chartlet_fragment.glsl

#version 300 es
precision mediump float; // 聲明float型變量的精度為mediumpin vec2 v_texCoord0;uniform sampler2D u_texture;out vec4 fragColor;void main() {fragColor = texture(u_texture, v_texCoord0);
}

? ? ? ? 運行效果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/168015.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/168015.shtml
英文地址,請注明出處:http://en.pswp.cn/news/168015.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

超級應用平臺(HAP)起航

各位明道云用戶和伙伴, 今天,我們正式發布明道云10.0版本。從這個版本開始,我們將產品名稱正式命名為超級應用平臺(Hyper Application Platform, 簡稱HAP)。我們用“超級”二字表達產品在綜合能力方面的突破&#xff…

清華系下一代 LCM

LCM LoRA模型是一種創新的深度學習模型,它通過特殊的技術手段,顯著提高了圖像生成的效率。這種模型特別適用于需要快速生成高質量圖像的場景,如藝術創作、實時圖像處理等。 GitHub - luosiallen/latent-consistency-model: Latent Consistenc…

視頻監控中的智能算法與計算機視覺技術

智能視頻監控是一種基于人工智能技術的監控系統,它能夠通過對圖像和視頻數據進行分析,自動識別目標物體、判斷其行為以及進行異常檢測等功能,從而實現對場景的智能化監管。以下是常見的一些用于智能視頻監控的算法: 1、人臉識別技…

RabbitMQ簡易安裝

一般來說安裝 RabbitMQ 之前要安裝 Erlang ,可以去Erlang官網下載。接著去RabbitMQ官網下載安裝包,之后解壓縮即可。 Erlang官方下載地址:Downloads - Erlang/OTP RabbitMQ官方下載地址:Downloading and Installing RabbitMQ —…

org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder

密碼,加密,解密 spring-security-crypto-5.7.3.jar /** Copyright 2002-2011 the original author or authors.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with t…

Kafka(一)

一:簡介 解決高吞吐量項目的需求 是一款為大數據而生的消息中間件,具有百億級tps的吞吐量,在數據采集、傳輸、存儲的過程中發揮著作用 二:為什么要使用消息隊列 一個普通訪問量的接口和一個大并發的接口,它們背后的…

C/C++---------------LeetCode第1512. 好數對的數目

好數對的數目 題目及要求暴力算法哈希算法在main內使用 題目及要求 給你一個整數數組 nums 。 如果一組數字 (i,j) 滿足 nums[i] nums[j] 且 i < j &#xff0c;就可以認為這是一組 好數對 。 返回好數對的數目。 示例 1&#xff1a; 輸入&#xff1a;nums [1,2,3,1,…

376.擺動序列

原題鏈接&#xff1a;376.擺動序列 全代碼&#xff1a; class Solution { public:int wiggleMaxLength(vector<int>& nums) {if (nums.size() < 1) return nums.size();int curDiff 0; // 當前一對差值int preDiff 0; // 前一對差值int result 1; // 記錄峰…

Android骨架圖

用法&#xff1a;在圖片上實現動畫效果 <FrameLayoutandroid:id"id/image_container"android:layout_width"match_parent"android:layout_height"wrap_content"><ImageViewandroid:id"id/ivBlank"android:layout_width"…

PostgreSQL Patroni 3.0 新功能規劃 2023年 紐約PG 大會 (音譯)

開頭還是介紹一下群&#xff0c;如果感興趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有問題&#xff0c;有需求都可以加群群內有各大數據庫行業大咖&#xff0c;CTO&#xff0c;可以解決你的問題。加群請聯系 liuaustin3 &#xff0c;&#xff08;…

React Hooks函數之useRef

useRef 是 React 中常用的 Hook 之一&#xff0c;它返回一個可變的 ref 對象&#xff0c;其 .current 屬性被初始化為傳入的參數&#xff08;initialValue&#xff09;。返回的 ref 對象在組件的整個生命周期內保持不變。 以下是一些使用 useRef 的場景和示例&#xff1a; 1、…

Mathorcup數學建模競賽第一屆-【媽媽杯】B題:圖像識別

目錄 知識儲備 傳統圖像處理方法進行瑕疵檢測 傳統算法方向的選擇 瑕疵檢測關注的兩個問題 瑕疵的標注

【技術分享】RK3399 Ubuntu通過Python實現錄音和播放功能

?本文基于IDO-SBC3968 Ubuntu 系統通過Python腳本實現錄音和播放功能。 IDO-SBC3968采用RK3399國產六核64位CPU高性能處理器&#xff0c;支持4K HDMI2.0顯示&#xff0c;接口豐富&#xff0c;擁有千兆以太網&#xff0c;全協議TypeC接口&#xff0c;USB3.0 &#xff0c;eDP 和…

Redis高并發緩存架構

前言&#xff1a; 針對緩存我們并不陌生&#xff0c;而今天所講的是使用redis作為緩存工具進行緩存數據。redis緩存是將數據保存在內存中的&#xff0c;而內存的珍貴性是不可否認的。所以在緩存之前&#xff0c;我們需要明確緩存的對象&#xff0c;是否有必要緩存&#xff0c;怎…

ElasticSearch之配置

ElasticSearch主要的配置文件&#xff0c;如下&#xff1a; elasticsearch.yml&#xff0c;ElasticSearch的相關參數。jvm.options&#xff0c;JVM的相關參數。log4j2.properties&#xff0c;日志的相關參數。 默認情況下&#xff0c;ElasticSearch從$ES_HOME/config目錄下讀…

1 動態規劃解不同的子序列

來源&#xff1a; LeetCode第115題 難度&#xff1a; 困難 問題描述 給定一個字符串S和一個字符串t&#xff0c;計算在S的子序列中t出現的個數。 注解&#xff1a; 字符串的一個子序列是指&#xff0c;通過刪除一些(也可以不刪除)字符且不干擾剩余字符的相對位置所組成的…

2022年03月 Scratch(三級)真題解析#中國電子學會#全國青少年軟件編程等級考試

Scratch等級考試(1~4級)全部真題?點這里 一、單選題(共25題,每題2分,共50分) 第1題 以下四個選項中,運行哪個積木塊,可能得到523這個數值? A: B: C: D: 答案:B 四個選項都遵循統一的公式:隨機數ⅹ10+3=523,因此可以得出隨

ZXing創建二維碼位圖

Android生成二維碼通常使用ZXing庫&#xff0c;其中提供了QRCodeWriter類。QRCodeWriter可將字符串編譯為位矩陣BitMatrix&#xff0c;然后我們可以將位矩陣轉為Int數組&#xff0c;通過bitmap.setPixels()方法將數組繪制于位圖上。 1. 添加依賴 //Gradle Scripts -> buil…

和數集團出席中科院上海高研院?第三十三期“高研交叉論壇”信息能源融合專場

2023年11月21日&#xff0c;中國科學院上海高等研究院第三十三期“高研交叉論壇”信息能源融合專場在上海高研院成功舉辦。本次論壇由中國科學院上海高等研究院智能信息通信技術研究與發展中心、中國科學院低碳轉化科學與工程重點實驗室、中科院和數智能區塊鏈與能源系統應用聯…

【文末送書】機器學習高級實踐

2023年初是人工智能爆發的里程碑式的重要階段&#xff0c;以OpenAI研發的GPT為代表的大模型大行其道&#xff0c;NLP領域的ChatGPT模型火爆一時&#xff0c;引發了全民熱議。而最新更新的GPT-4更是實現了大型多模態模型的飛躍式提升&#xff0c;它能夠同時接受圖像和文本的輸入…