[問題] Qt shader 設定camera位置
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Qt 5.0
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
openGL
問題(Question):
是這樣的
最近正在用Qt寫一些openGL的東西
Qt5有提供 ShaderEffect這個QML元素
來達成利用GLSL幫我們畫圖的機制
然而在寫的過程中有遇到一些問題
我想要利用GLSL引入圖片
然後對圖片做一些效果,像是旋轉、平移之類的
GLSL code如下:
//vertext shader
uniform highp mat4 qt_Matrix;
attribute highp vec4 qt_Vertex;
attribute highp vec2 qt_MultiTexCoord0;
varying highp vec2 coord;
void main()
{
highp mat4 ModelMatrix = vec4(...);
coord = qt_MultiTexCoord0;
gl_Position = qt_Matrix * ModelMatrix * qt_Vertex;
}
//fragment shader
varying highp vec2 coord;
uniform sampler2D src;
void main()
{
gl_FragColor = texture2D(src, coord);
}
最後畫出來的結果會是一張圖出現在螢幕的左上角
ModelMatrix是我自己另外設定的矩陣
我可以透過這個矩陣對圖片做旋轉或平移
在這裡要請問的就是如果我想改變看的角度要怎麼設定呢?
例如說他原本是在(0,0,10)的位置看
若是想要從(0,10,10) ,就是從圖片的上方往下看
這樣要怎麼設定呢?
我在網路上查了不少資料
滿多人都是利用opengl的API去設定的
(好像是透過glulookat()? )
但似乎都無法直接在GLSL設定
像是利用 gl_eye(vec3(x,y,z))之類的方式
另外一點,我本來是想說利用平移的方式來做的
但是不知道為啥我平移x,y都沒問題
但平移z就是會出錯~只要z的值超過1.0甚至連圖片都會看不到
不知道是否與座標轉換有關?
小弟最近才剛開始接觸 GLSL
所以可能有很多觀念有誤
也請大家不吝指教囉
在此也先謝謝大家的回答了
--
▍ ▍ ╯╰ ╯╰ ◢◣ ◢◣ 我最愛的 柏柏龍~ 柏柏龍~
◢██◣ ╮╭ ▎▎╮╭ ▎▎ 柏柏龍~ 柏柏龍~
⊙ ⊙ ◢ ◣ ⊙ ⊙ ◣ 人人心中都有柏柏龍~
≡ ▼ ≡ ▲▲ ● ● ≡ ▼ ≡ ■ ■ ■ ■ 憤怒就永遠不會消失~
皿 ◢⊙⊙◣ ≡皿 ≡ 皿 炸是最美的擁有~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.179.30
推
10/19 19:05, , 1F
10/19 19:05, 1F
→
10/19 19:06, , 2F
10/19 19:06, 2F
→
10/19 23:49, , 3F
10/19 23:49, 3F
→
10/19 23:49, , 4F
10/19 23:49, 4F
推
10/20 00:31, , 5F
10/20 00:31, 5F
→
10/20 00:33, , 6F
10/20 00:33, 6F
→
10/20 00:34, , 7F
10/20 00:34, 7F
→
10/20 14:34, , 8F
10/20 14:34, 8F
→
10/20 14:35, , 9F
10/20 14:35, 9F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
-4
5