texture_get_width/height的返回值到底是什么? 已解决
Rayleed 发表于 2018-07-25 01:39:47 529

我知道texture_get_texel_width/height可以获取材质页中的像素大小,给shader用,不过给primitive用的这个函数——名称里没有texel的——返回值到底是什么?精灵大小试过各种非2次幂,每次还是返回1。我看见YYG论坛有人写了类似draw_vertex(x, y, tex_x * w, tex_y * h)的代码,w、h是这个函数的返回值,这倒是告诉我怎么去用它,不过还是对标题这个问题很好奇

最后于 9月前 被Rayleed编辑 ,原因:
最新回复 (7)
  • POSI 发表于 2018-07-25 04:40:08
    0 2
    draw_vertex只有两个参数,你说的应该是draw_vertex_texture(x,  y,  xtex,  ytex)
    texture_get_height(tex)的返回值是纹理的坐标,范围在0-1,详情可查F1手册
  • Rayleed 发表于 2018-07-26 09:54:42
    0 3
    事实上如果F1能告诉我为什么一直返回1的话我也不会来这里了
  • POSI 发表于 2018-07-27 04:53:40
    0 4
    Rayleed 事实上如果F1能告诉我为什么一直返回1的话我也不会来这里了

    因为纹理的长宽取值范围在0-1范围内,和原精灵的大小无关,纹理右下角坐标始终是(1,1),所以texture_get_width/height返回的通常是最大值1

    最后于 9月前 被POSI编辑 ,原因:
  • test 发表于 2018-07-30 10:10:21
    0 5
    POSI 因为纹理的长宽取值范围在0-1范围内,和原精灵的大小无关,纹理右下角坐标始终是(1,1),所以texture_get_width/height返回的始终是最大值1
    那么在什么情况下,会返回1以外的值呢?
  • Rayleed 发表于 2018-07-31 07:31:24
    0 6
    好吧……似乎这个函数只在xp上返回过非1值(至少我目前是这样),所以是系统/dx版本问题吗
  • POSI 发表于 2018-08-01 08:24:22
    0 7
    Rayleed 好吧……似乎这个函数只在xp上返回过非1值(至少我目前是这样),所以是系统/dx版本问题吗

    是,如果运行环境不支持非2次幂纹理,使用非2次幂精灵时纹理会放大为最接近的2次幂,精灵不放大,返回0-1范围内实际大小,如果支持,纹理和精灵一样大,返回1

  • Rayleed 发表于 2018-08-03 09:57:54
    0 8
    POSI Rayleed 好吧……似乎这个函数只在xp上返回过非1值(至少我目前是这样),所以是系统/dx版本问题吗 是,如果运行环境不支持非2次幂纹理,使用非2次幂精灵 ...
    好吧,Thx