簡體   English   中英

OpenGL Es 2紋理縮放問題

[英]OpenGL Es 2 texture zooming issue

我正在為我的項目開發OpenGL ES 2.0,我想做的只是通過將比例值賦予模型矩陣來自動縮放紋理。但是問題是,在縮放紋理時,紋理的邊緣無法保持平滑運動而是邊緣逐步移動...任何人都可以給我解決方案...

(void)render:(CADisplayLink*)displayLink {

    _currentScale++;

    glClearColor(0, 104.0/255.0, 55.0/255.0, 1.0);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_DEPTH_TEST);
    glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuffer);

    glEnable(GL_TEXTURE_2D);
    glEnable(GL_BLEND);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glDisable(GL_DEPTH_TEST);


    GLKMatrix4 aspect = [animations getActualScaleForImage:inputImage.size withPortSize:CGSizeMake(self.frame.size.width, self.frame.size.height)];
    aspect = GLKMatrix4Scale(aspect,1 + (_currentScale/3000), 1 + (_currentScale/3000) , 0);
    glUniformMatrix4fv(_modelViewUniform, 1, 0, aspect.m);

    glViewport(0, 0, self.frame.size.width, self.frame.size.height);
    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D,_backGroundTxe);
    glUniform1i(_textureUniform, 0);
    glVertexAttribPointer(_positionSlot, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0);
    glVertexAttribPointer(_texCoordSlot, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid*) (sizeof(float) * 7));

    glDrawElements(GL_TRIANGLES, sizeof(Indices)/sizeof(Indices[0]), GL_UNSIGNED_BYTE, 0);

    [_context presentRenderbuffer:GL_RENDERBUFFER];
}

這是我的渲染功能

如果我了解您的描述,聽起來您需要調整紋理過濾。

盡管_backGroundTxe在您第一次創建它的過程中仍然被綁定,請嘗試添加:

glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

或者,如果希望紋理在縮小時看起來平滑,則可以嘗試以下方法:

glGenerateMipmaps(GL_TEXTURE_2D);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

這是OpenGL紋理過濾的不錯介紹: http : //www.learnopengles.com/android-lesson-six-an-introduction-to-texture-filtering/適用於Android / Java,但是將其轉換為iOS卻很簡單。 / C ++,只需省略所有“ GLES20”。

暫無
暫無

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

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