当使用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 }
?
答案 0 :(得分:3)
纹理的大小并不重要。
子区域的大小已更新。具体而言,glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, data)
期望data
指向适当类型和格式的大小为(width, height)
的矩形图像。数据从内存中解压缩的方式由GL_UNPACK_ALIGNMENT
,GL_UNPACK_ROW_LENGTH
和朋友管理。请参阅OpenGL specification §8.4 Pixel Rectangles。
在您的特定情况下,data
必须指向{ 255 }
之类的单个值。