OpenGL glTexSubImage数据打包

时间:2016-12-30 08:08:58

标签: c++ opengl textures

当使用OpenGL的glTexSubImage2D和glTexSubImage3D函数时,子图像不等于纹理的实际尺寸,数据指针是否应包含数据以匹配实际纹理尺寸或子图像的尺寸?

例如,如果你有一个简单的3x3纹理,并且你只想上传中心像素,那就是一个x偏移1,y偏移1,宽度1和高度1的子图像,你可以调用...

library(plotly) library(shiny) ui <- fluidPage( plotlyOutput("plot"), verbatimTextOutput("brush") ) server <- function(input, output, session) { output$plot <- renderPlotly({ p <- ggplot(mtcars, aes(x = mpg, y = wt, colour = factor(vs))) + geom_point() ggplotly(p) %>% layout(dragmode = "select") }) output$brush <- renderPrint({ d <- event_data("plotly_selected") if (is.null(d)) "Click and drag events (i.e., select/lasso) appear here (double-click to clear)" else d }) } shinyApp(ui, server)

glTexSubImage2D(GL_TEXTURE_2D, 0, 1, 1, 1, 1, GL_RED, GL_UNSIGNED_BYTE, data)应该是data还是{ 255 }

1 个答案:

答案 0 :(得分:3)

纹理的大小并不重要。

子区域的大小已更新。具体而言,glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, data)期望data指向适当类型和格式的大小为(width, height)的矩形图像。数据从内存中解压缩的方式由GL_UNPACK_ALIGNMENTGL_UNPACK_ROW_LENGTH和朋友管理。请参阅OpenGL specification §8.4 Pixel Rectangles

在您的特定情况下,data必须指向{ 255 }之类的单个值。