簡體   English   中英

將均勻的float傳遞到頂點着色器opengl中

[英]passing uniform float into vertex shader opengl

我在通過使用統一輸入到我的頂點着色器時從c ++傳遞浮點數時遇到問題。 該浮動僅是為了不斷增加自身。

在我的標題中

float pauto;
void pautoupdate(int program);

現在在我的cpp中

void World::pautoupdate(int program)
{
    pauto += 0.1f;

    glUniform1f(glGetUniformLocation(program, "pauto"), pauto);
}

在我的頂點着色器中,它被聲明為並且只是遞增x值

uniform float pauto;

terrx = Position.x;
terrx += pauto;

從這里開始,我沒有從此獲得任何結果,我不確定是否錯誤地指向了它或其他東西。

請嘗試以下操作:

  1. 我假設您顯示的GLSL程序不是完整的代碼,因為沒有main或任何東西。
  2. 輸入功能時檢查程序是否已設置
  3. 存儲glGetUniformLocation的輸出並檢查確定
  4. 在之前/之后致電glGetError以查看GL是否檢測到問題。

如果要在各種情況下快速測試和設置着色器,有幾種工具可以幫助您。 在線上有例如ShaderToy( http://www.shadertoy.com )。 脫機,讓我推薦我開發的一個工具Tao3D( http://tao3d.sf.net )。

GlUniform *應該在glUseProgram(program)和glUseProgram(0)之間應用:

1.使用着色器
2.設置制服
3.渲染東西
4.配置着色器

之所以如此,是因為OpenGL必須知道您要向其發送制服的女巫程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM