国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

GLSL基礎概念(絕對看得懂)

這篇具有很好參考價值的文章主要介紹了GLSL基礎概念(絕對看得懂)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

簡介

GLSL(OpenGL Shading Language)是一種用于描述頂點和片元著色器的語言。它是一種 C 語言的變體,專門為 OpenGL 和其他著色器渲染系統(tǒng)而設計。

在渲染圖形時,主程序會將頂點數(shù)據(jù)發(fā)送到 GPU,然后 GPU 會使用圖形著色器來計算每個像素的最終顏色。圖形著色器的輸入是頂點數(shù)據(jù),輸出是像素顏色。

著色器代碼和主程序之間的關系就在于著色器代碼是在GPU上執(zhí)行的,主程序是在CPU上執(zhí)行的。主程序會把數(shù)據(jù)傳給著色器,例如頂點數(shù)據(jù),著色器代碼就能夠處理這些數(shù)據(jù),并將結果返回給主程序。

GLSL 著色器分為兩類:

頂點著色器:處理圖形中每個頂點的位置。
片元著色器:處理每個像素的顏色和透明度。
GLSL 著色器代碼通常包含一個或多個函數(shù),每個函數(shù)都有一個特定的輸入和輸出。例如,頂點著色器的主函數(shù)通常名為 main,它接受一個位置向量作為輸入,并返回一個處理后的位置向量作為輸出。

#version 330 core

in vec3 aPos;

void main()
{
  gl_Position = vec4(aPos, 1.0);
}

在這個例子中,我們定義了一個輸入變量 aPos,它是一個三維向量。在函數(shù)體中,我們將 aPos 賦值給了內建變量 gl_Position。gl_Position 是一個四維向量(把它變成了齊次坐標,方便旋轉平移縮放),它表示當前頂點的位置。
你可以使用 GLSL 編寫自己的著色器代碼,然后將其編譯并附加到你的圖形程序中。通常,你需要創(chuàng)建一個頂點著色器和一個片元著色器,然后將它們附加到一個圖形程序中。例如,在 OpenGL 中,你可以使用以下代碼來加載著色器(記得封裝):

GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);

// 加載著色器源代碼
glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);

// 編譯著色器
glCompileShader(vertexShader);
glCompileShader(fragmentShader);

// 創(chuàng)建圖形程序
GLuint shaderProgram = glCreateProgram();

// 附加著色器到圖形程序
glAttachShader(shaderProgram, vertexShader);
glAttachShader(shaderProgram, fragmentShader);

// 鏈接圖形程序
glLinkProgram(shaderProgram);

// 刪除著色器,因為它們已經(jīng)附加到圖形程序中
glDeleteShader(vertexShader);
glDeleteShader(fragmentShader);

如何在程序中使用 GLSL 著色器

首先,你需要在你的圖形程序中設置頂點屬性。例如,如果你的頂點著色器有一個名為 aPos 的輸入變量,那么你就需要在你的程序中設置對應的頂點屬性。你可以使用以下代碼來設置頂點屬性:

GLint posAttrib = glGetAttribLocation(shaderProgram, "aPos");
glVertexAttribPointer(posAttrib, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);
glEnableVertexAttribArray(posAttrib);

在這個例子中,我們首先調用 glGetAttribLocation 函數(shù)來獲取 aPos 變量的位置。然后,我們使用 glVertexAttribPointer 函數(shù)來設置頂點屬性,并使用 glEnableVertexAttribArray 函數(shù)來啟用頂點屬性。
接著,你可以使用以下代碼來使用你的著色器繪制圖形:

glUseProgram(shaderProgram);
glDrawArrays(GL_TRIANGLES, 0, 3);

在這個例子中,我們首先調用 glUseProgram 函數(shù)來使用圖形程序。然后,我們調用 glDrawArrays 函數(shù)來繪制。

更詳細的著色器示例:

頂點著色器可能會類似于這樣:

#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;

out vec3 ourColor;

uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;

void main()
{
    gl_Position = projection * view * model * vec4(aPos, 1.0);
    ourColor = aColor;
}

頂點著色器接受頂點屬性 aPos 和 aColor,并將其轉換為世界空間中的位置。gl_Position并不是out變量,因此直接輸出,而out變量ourcolor的功能:將每個頂點的顏色從頂點著色器傳遞到片段著色器中。

而片段著色器類似于下面這樣:

#version 330 core
out vec4 FragColor;

in vec3 ourColor;

void main()
{
    FragColor = vec4(ourColor, 1.0);
}

片段著色器接受來自頂點著色器的顏色,并將其傳遞給輸出顏色。這樣,每個像素都會有一種顏色,并且圖形就會顯示出來。

主程序還可以使用變量和常量(稱為 uniform 變量)來與著色器代碼進行交互。例如,在上面的著色器代碼中,主程序可以將 model, view, projection 的矩陣傳遞給頂點著色器以計算每個頂點的世界空間位置。

好,同學們加油文章來源地址http://www.zghlxwxcb.cn/news/detail-428413.html

到了這里,關于GLSL基礎概念(絕對看得懂)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【機器學習】什么是GAN 小孩都看得懂的 GAN

    【機器學習】什么是GAN 小孩都看得懂的 GAN

    以下內容來自:王圣元?王的機器 0 ? GAN 是什么 GAN 的全稱是 Generative Adversarial Network,中文是 生成對抗網(wǎng)絡 。 一言以蔽之,GAN 包含了兩個神經(jīng)網(wǎng)絡, 生成器 (generator)和 辨別器 (discriminator),兩者互相博弈不斷變強,即生成器產(chǎn)出的東西越來越逼真,辨別器的識別能力

    2024年02月01日
    瀏覽(13)
  • 【可樂薦書】有趣的矩陣:看得懂又好看的線性代數(shù)

    【可樂薦書】有趣的矩陣:看得懂又好看的線性代數(shù)

    本欄目將推薦一些經(jīng)典的、有趣的、有啟發(fā)性的書籍,這些書籍涵蓋了各個領域,包括文學、歷史、哲學、科學、技術等等。相信這些書籍不僅可以讓你獲得知識,還可以讓你感受到閱讀的樂趣和魅力。 今天給大家推薦的書籍是:《有趣的矩陣:看得懂又好看的線性代數(shù)》

    2024年02月05日
    瀏覽(27)
  • 看得懂的豬周期,牧原們卻不一定跨得過

    看得懂的豬周期,牧原們卻不一定跨得過

    2022年2月16日,全國各省三元豬均價為12.34元/公斤,較昨日下跌0.13元/公斤,較上周同期豬價(2月9日)下跌1.20元/公斤。 在供需關系的支配下,豬肉價格上漲,散戶蜂擁而上,豬肉供給大增,肉價下跌,一個無解的循環(huán)就此形成。 豬周期,是一個典型的和面加水問題。在繁榮中

    2024年02月04日
    瀏覽(22)
  • verilog 從入門到看得懂---verilog 的基本語法數(shù)據(jù)和運算

    verilog 從入門到看得懂---verilog 的基本語法數(shù)據(jù)和運算

    ????????筆者之前主要是使用c語言和matab 進行編程,從2024年年初開始接觸verilog,通過了一周的學習,基本上對verilog 的語法有了基本認知??偨y(tǒng)來說,verilog 的語法還是很簡單的,主要難點是verilog是并行運行,并且強烈和硬件實際電路相關,在設計到的時候需要考慮時序

    2024年03月18日
    瀏覽(23)
  • [免費專欄] Android安全之Android Xposed插件開發(fā),小白都能看得懂的教程

    [免費專欄] Android安全之Android Xposed插件開發(fā),小白都能看得懂的教程

    也許每個人出生的時候都以為這世界都是為他一個人而存在的,當他發(fā)現(xiàn)自己錯的時候,他便開始長大 少走了彎路,也就錯過了風景,無論如何,感謝經(jīng)歷 轉移發(fā)布平臺通知:將不再在CSDN博客發(fā)布新文章,敬請移步知識星球 感謝大家一直以來對我CSDN博客的關注和支持,但

    2024年02月09日
    瀏覽(39)
  • 想要成為 NLP 領域的大牛?從 ChatGPT 的 5 大自然語言模型開始了解吧(LM、Transformer、GPT、RLHF、LLM)——小白也能看得懂

    想要成為 NLP 領域的大牛?從 ChatGPT 的 5 大自然語言模型開始了解吧(LM、Transformer、GPT、RLHF、LLM)——小白也能看得懂

    ??如果想在自然語言處理(Natural Language Processing,NLP)領域內脫穎而出,那么你一定不能錯過 ChatGPT 的 5 大自然語言模型:LM、Transformer、GPT、RLHF 和 LLM。這些模型是 NLP 領域中最為重要的基礎,涵蓋了 語言模型、預訓練模型、生成模型 等關鍵知識點。即使你是一個 NLP 小白

    2024年02月09日
    瀏覽(16)
  • Qt OpenGL(四十二)——Qt OpenGL 核心模式-GLSL(二)

    Qt OpenGL(四十二)——Qt OpenGL 核心模式-GLSL(二)

    提示:本系列文章的索引目錄在下面文章的鏈接里(點擊下面可以跳轉查看): Qt OpenGL 核心模式版本文章目錄 馮一川注:GLSL其實也是不斷迭代的,比如像3.3版本中,基本數(shù)據(jù)類型浮點型只支持float型,而GLSL4.0版本開始就有double型數(shù)據(jù)的支持了,所以本系列GLSL部分以GLSL4.5版

    2024年02月08日
    瀏覽(25)
  • OPENGL ES 2.0 知識串講 (6)——GLSL 語法(IV)

    上面兩節(jié),主要講解了 GLSL 中變量和函數(shù)的定義語法和使用語法,現(xiàn)在我們可以在 shader 中自定義一些我們所需要用到的變量和函數(shù)。但是在 shader 中, 還存在著一些內置的變量和函數(shù)。這些變量主要是用于將 Shader 計算得到的值傳給 GPU,完成 Shader 在 Pipeline 中的功能。由于我們使

    2024年02月02日
    瀏覽(21)
  • MIPI簡介(一)——基礎概念介紹

    MIPI簡介(一)——基礎概念介紹

    MIPI 全稱Mobile Industry Processor Interface,即移動產(chǎn)業(yè)處理器接口。MIPI聯(lián)盟在2003年由ARM, Nokia, ST ,TI等公司成立,成員包括手機設備制造商、半導體廠商、軟件廠商、系統(tǒng)供應商、外圍設備制造商、知識產(chǎn)權提供商、其他公司。聯(lián)盟成立的目的是把手機內部的接口如攝像頭、顯示屏

    2024年02月09日
    瀏覽(22)
  • Android OpenGL ES 學習(一) -- 基本概念

    Android OpenGL ES 學習(一) -- 基本概念

    OpenGL 學習教程 Android OpenGL ES 學習(一) – 基本概念 Android OpenGL ES 學習(二) – 圖形渲染管線和GLSL Android OpenGL ES 學習(三) – 繪制平面圖形 Android OpenGL ES 學習(四) – 正交投屏 Android OpenGL ES 學習(五) – 漸變色 Android OpenGL ES 學習(六) – 使用 VBO、VAO 和 EBO/IBO 優(yōu)化程序 Android OpenG

    2024年01月23日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包