Helion Bestsellery

LLM w projektowaniu oprogramowania. Tworzenie inteligentnych aplikacji i agentów z wykorzystaniem dużych modeli językowych
  • Autor: Valentina Alto
  • Zniżka: 40%
  • Cena: 89.00 53.40 zł
  • Marka: Helion
  • Status: Dostępna
  • Typ: Książka
  • EAN: 9788328918948
  • ISBN: 978-83-289-1894-8
Dodaj LLM w projektowaniu oprogramowania. Tworzenie inteligentnych aplikacji i agentów z wykorzystaniem dużych modeli językowych do koszyka

Helion Książka Dnia

Algorytmy w Pythonie. Techniki programowania dla praktyków
  • Autor: Piotr Wróblewski
  • Zniżka: 50%
  • Cena: 119.00 59.50 zł
  • Marka: Helion
  • Status: Dostępna
  • Typ: Książka
  • EAN: 9788328393684
  • ISBN: 978-83-283-9368-4
Dodaj Algorytmy w Pythonie. Techniki programowania dla praktyków do koszyka

copyTexImage2D()

[ Leksykon ] [ JavaScript ] [ Metody ] [ canvas ] [ WebGL ]

WebGLRenderingContext.copyTexImage2D()

[_] [A] [B] [C] [D] [E] [F] [G] [H] [I] [J] [K] [L] [M] [N] [O] [P] [Q] [R] [S] [T] [U] [V] [W] [X] [Y] [Z]

copyTexImage2D(target, level, internalformat, x, y, width, height, border)

 

Przykłady: 

 function createTextureFramebuffer(gl, width, height) {

const tex = gl.createTexture();

gl.bindTexture(gl.TEXTURE_2D, tex);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);

const fb = gl.createFramebuffer();
gl.bindFramebuffer(gl.FRAMEBUFFER, fb);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, tex, 0);

if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) !== gl.FRAMEBUFFER_COMPLETE) {
console.log("BRAK KOMPLETNEGO BUFERA RAMKI");
}

if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE) {
console.log("BUFOR RAMKI KOMPLETNY");
}

return {tex: tex, fb: fb};

}

const buf = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buf);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
-1, -1,
1, -1,
-1, 1,
-1, 1,
1, -1,
1, 1,
]), gl.STATIC_DRAW);

const colorProgram = gl.getAttribLocation(glProgramColor, "a_position");

gl.enableVertexAttribArray(colorProgram);
gl.vertexAttribPointer(colorProgram, 2, gl.FLOAT, false, 0, 0);

const colorLocation = gl.getUniformLocation(glProgramColor, "u_color");
const colorProgLocation = gl.getUniformLocation(glProgramColor, "u_matrix");

gl.useProgram(glProgramColor);

const texFb1 = createTextureFramebuffer(gl, 200, 200);
const texFbcopy = createTextureFramebuffer(gl, 1, 1);

gl.bindFramebuffer(gl.FRAMEBUFFER, texFb1.fb);

gl.viewport(0, 0, 200, 200);
gl.uniform4fv(colorLocation, [1, 0, 0, 1]);
gl.uniformMatrix4fv(colorProgLocation, false, [
0.5, 0, 0, 0,
0,.25, 0, 0,
0, 0, 1, 0,
.2,.3, 0, 1,
]);

gl.drawArrays(gl.TRIANGLES, 0, 6);

gl.copyTexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 70, 110, 100, 45, 0);

const tekstura1 = {
width: 200,
height: 200,
texture: texFb1.tex,
};
const drawTekstura1 = {
x: 0,
y: 0,
textureInfo: tekstura1,
};
draw.push(drawTekstura1);

const teksturaCopy = {
width: 100,
height: 45,
texture: texFbcopy.tex,
};
const drawTeksturaCopy = {
x: 10,
y: 350,
textureInfo: teksturaCopy,
};
draw.push(drawTeksturaCopy);

rysujObraz(
draw[0].textureInfo.texture,
draw[0].textureInfo.width,
draw[0].textureInfo.height,
draw[0].x,
draw[0].y);

rysujObraz(
draw[1].textureInfo.texture,
draw[1].textureInfo.width,
draw[1].textureInfo.height,
draw[1].x,
draw[1].y);

function rysujObraz(tekstura, teksturaWidth, teksturaHeight, obrazX, obrazY) {

gl.bindTexture(gl.TEXTURE_2D, tekstura);
gl.enableVertexAttribArray(positionLocation);
gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0);
gl.enableVertexAttribArray(texcoordLocation);
gl.vertexAttribPointer(texcoordLocation, 2, gl.FLOAT, false, 0, 0);
var matrix = macierzPro(0, gl.canvas.width, gl.canvas.height, 0, -1, 1);
matrix = translacja(matrix, obrazX, obrazY, 0);
matrix = skalowanie(matrix, teksturaWidth, teksturaHeight, 1);
gl.uniformMatrix4fv(matrixLocation, false, matrix);
gl.uniform1i(textureLocation, 0);
gl.drawArrays(gl.TRIANGLES, 0, 6);

gl.disableVertexAttribArray( positionLocation );

}

  

Opis:
Metoda WebGLRenderingContext.copyTexImage2D() kopiuje piksele z bieżącego WebGLFramebuffer obrazu tekstury 2D. Określa teksturę dwuwymiarową lub teksturę w kształcie mapy sześcianu dla bieżącej jednostki tekstury, określonej za pomocą ActiveTexture(). Umożliwia odczyt z aktualnie powiązanego odczytu bufora ramki, gdy bieżący moduł cieniujący fragmenty lub moduł cieniujący wierzchołków korzysta z wbudowanych funkcji wyszukiwania tekstur. copyTexImage2D() definiuje dwuwymiarowy obraz tekstury lub obraz tekstury w kształcie mapy sześcianu z pikselami z bieżącego bufora ramki, a nie z pamięci klienta, jak ma to miejsce w przypadku TexImage2D(). Piksele w prostokącie są przetwarzane dokładnie tak, jakby wywołano funkcję ReadPixels() z formatem ustawionym na GL_RGBA, ale proces zatrzymuje się zaraz po konwersji wartości RGBA. Dalsze przetwarzanie jest identyczne z glTexImage2D, zaczynając od umieszczenia wartości RGBA w zakresie 0, 1, a następnie konwersja do wewnętrznego formatu tekstury w celu przechowywania w tablicy texel. Komponenty wymagane do formatu wewnętrznego muszą stanowić podzbiór komponentów obecnych w formacie bufora ramki. Na przykład bufor ramki GL_RGBA może zostać użyty do dostarczenia komponentów dla dowolnego formatu wewnętrznego. Jednakże bufor ramki GL_RGB może być używany tylko do dostarczania komponentów dla tekstur w podstawowym formacie wewnętrznym GL_RGB lub GL_LUMINANCE, nie do tekstur GL_ALPHA, GL_LUMINANCE_ALPHA lub GL_RGBA. Kopiuje z bieżącego bufora ramki lub płótna do danego celu bieżącej jednostki tekstury. Parametry:

target - GLenum określenie punktu wiązania docelowego aktywnej tekstury. Możliwa wartość:

gl.TEXTURE_2D - Dwuwymiarowa tekstura
gl.TEXTURE_CUBE_MAP_POSITIVE_X Dodatnia ściana X dla tekstury odwzorowanej w kształcie sześcianu
gl.TEXTURE_CUBE_MAP_NEGATIVE_X Negatywna ściana X dla tekstury odwzorowanej w kształcie sześcianu
gl.TEXTURE_CUBE_MAP_POSITIVE_Y Dodatnia ściana Y dla tekstury odwzorowanej w kształcie sześcianu
gl.TEXTURE_CUBE_MAP_NEGATIVE_Y Negatywna ściana Y dla tekstury odwzorowanej w kształcie sześcianu
gl.TEXTURE_CUBE_MAP_POSITIVE_Z Pozytywna ściana Z dla tekstury odwzorowanej w kształcie sześcianu
gl.TEXTURE_CUBE_MAP_NEGATIVE_Z Negatywna ściana Z dla tekstury odwzorowanej w kształcie sześcianu

level - GLint określenie poziomu szczegółowości. Poziom 0 to podstawowy poziom obrazu, a poziom n to n-ty poziom redukcji mipmapy

internalformat - GLenum określenie składników koloru w teksturze. Możliwa wartość:

gl.ALPHA - Odrzuca komponenty czerwony, zielony i niebieski i odczytuje komponent alfa
gl.RGB - Odrzuca komponenty alfa i odczytuje komponenty czerwony, zielony i niebieski
gl.RGBA - Składowe czerwony, zielony, niebieski i alfa są odczytywane z bufora kolorów
gl.LUMINANCE - Każdy składnik koloru jest składnikiem luminancji, alfa wynosi 1,0
gl.LUMINANCE_ALPHA - Każdy składnik jest składnikiem luminancji/alfa

x - GLint określająca współrzędną x lewego dolnego rogu, od którego należy rozpocząć kopiowanie
y - GLint określająca współrzędną y lewego dolnego rogu, od którego należy rozpocząć kopiowanie
width - GLsizei określenie szerokości tekstury
height - GLsizei określenie wysokości tekstury
border - GLint określenie szerokości obramowania. Musi być 0

Wartość zwracana undefined.

Zobacz też:
WebGLFramebuffer - 
copyTexImage2D - 
copyTexSubImage2D - 
readPixels - 
Texel - W grafice 3D texel to pojedynczy piksel w teksturze

 

Please publish modules in offcanvas position.