| 1902 | } |
| 1903 | |
| 1904 | void rend_SetAlphaType(int8_t atype) { |
| 1905 | if (atype == gpu_state.cur_alpha_type) |
| 1906 | return; // don't set it redundantly |
| 1907 | #if (defined(_USE_OGL_ACTIVE_TEXTURES)) |
| 1908 | if (UseMultitexture && Last_texel_unit_set != 0) { |
| 1909 | oglActiveTextureARB(GL_TEXTURE0_ARB + 0); |
| 1910 | Last_texel_unit_set = 0; |
| 1911 | } |
| 1912 | #endif |
| 1913 | OpenGL_sets_this_frame[6]++; |
| 1914 | |
| 1915 | if (atype == AT_ALWAYS) { |
| 1916 | if (opengl_Blending_on) { |
| 1917 | dglDisable(GL_BLEND); |
| 1918 | opengl_Blending_on = false; |
| 1919 | } |
| 1920 | } else { |
| 1921 | if (!opengl_Blending_on) { |
| 1922 | dglEnable(GL_BLEND); |
| 1923 | opengl_Blending_on = true; |
| 1924 | } |
| 1925 | } |
| 1926 | |
| 1927 | switch (atype) { |
| 1928 | case AT_ALWAYS: |
| 1929 | case AT_TEXTURE: |
| 1930 | rend_SetAlphaValue(255); |
| 1931 | dglBlendFunc(GL_ONE, GL_ZERO); |
| 1932 | break; |
| 1933 | case AT_CONSTANT: |
| 1934 | case AT_CONSTANT_TEXTURE: |
| 1935 | case AT_VERTEX: |
| 1936 | case AT_CONSTANT_TEXTURE_VERTEX: |
| 1937 | case AT_CONSTANT_VERTEX: |
| 1938 | case AT_TEXTURE_VERTEX: |
| 1939 | dglBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
| 1940 | break; |
| 1941 | case AT_LIGHTMAP_BLEND: |
| 1942 | dglBlendFunc(GL_DST_COLOR, GL_ZERO); |
| 1943 | break; |
| 1944 | case AT_SATURATE_TEXTURE: |
| 1945 | case AT_LIGHTMAP_BLEND_SATURATE: |
| 1946 | case AT_SATURATE_VERTEX: |
| 1947 | case AT_SATURATE_CONSTANT_VERTEX: |
| 1948 | case AT_SATURATE_TEXTURE_VERTEX: |
| 1949 | dglBlendFunc(GL_SRC_ALPHA, GL_ONE); |
| 1950 | break; |
| 1951 | case AT_SPECULAR: |
| 1952 | break; |
| 1953 | default: |
| 1954 | Int3(); // no type defined,get jason |
| 1955 | break; |
| 1956 | } |
| 1957 | gpu_state.cur_alpha_type = atype; |
| 1958 | gpu_Alpha_multiplier = rend_GetAlphaMultiplier(); |
| 1959 | CHECK_ERROR(15) |
| 1960 | } |
| 1961 |
no test coverage detected