전체 글 187

fast I/O와 sync_with_stdio(false), cin.tie(nullptr)

system call의 횟수를 줄이기 위해 입출력을 메모리 버퍼에 모아두고 한 번에 처리하는 것입력할 때마다 `read()` 호출 X출력할 때마다 `write()` 호출 X버퍼에 쌓아두고 한 번에 OS에 요청 레벨 1: OS I/O (아주 느림)`read()`, `write()``system call`컨텍스트 스위칭 발생 레벨 2: libc stdio (이미 fast I/O)printf, scanf내부 버퍼 있음 (기본 1024)system call 최소화→ fast I/O의 핵심 레벨 3: C++ iostreamcin, cout자체 버퍼 + libc 버퍼까지 고려일관성 보장 때문에 느려짐iostream은 기본적으로:cstdio와의 일관성 보장cin ↔ cout 자동 flush (tie)locale / ..

CS/C++ 2025.12.23

스트림(stream) - cin/cout, stringstream, fstream, 스트림 상태 플래그

스트림(Stream)입출력을 처리하는 데 사용되며, 바이트(byte) 단위의 데이터 흐름을 의미.→ “방향”이 아니라 “통로”스트림은 내부에 버퍼(buffer)라는 임시 메모리 공간을 가짐데이터는 순서대로만 읽힘임의 접근 불가 (배열처럼 중간부터 읽을 수 없음)한 번 읽은 데이터는 사라짐다시 읽으려면 처음부터 다시 받아야 함스트림은 “지금 어디까지 읽었는지”를 기억함입력 스트림 (istream): 데이터가 소스(키보드, 파일 등)에서 프로그램(메모리)으로 들어옴 (std::cin 등)출력 스트림 (ostream): 데이터가 프로그램(메모리)에서 대상(화면, 파일 등)으로 나감 (std::cout, std::cerr 등)양방향 스트림 (iostream): 입력과 출력을 모두 지원항목접근 방식중간 접근되돌..

CS/C++ 2025.12.17

10. Uniform Shader - 유니폼 변수로 삼각형 색칠하기

Uniformuniform은 CPU에서 GPU shader로 데이터를 전달하는 또 다른 방법.vertex attribute와는 좀 다른데, uniform은 전역적이라서 shader program object에 변수가 고유하게 유지되어 있어어떤 Shader 단계에서도 접근이 가능함.전역 변수와 비슷한 개념. 한 번 설정하면 재설정하는게 아니라면 값을 유지함. GLSL에서 uniform을 선언.uniform 키워드와 type 변수명으로 구성됨.#version 330 coreout vec4 FragColor;uniform vec4 ourColor; // 이 변수를 OpenGL 코드에서 설정함void main(){ FragColor = ourColor;} fragment shader에서 uniform 변수 ou..

9. GLSL Shader 변수 전달하기

Shadersshader는 GPU에서 실행되는 작은 프로그램이라고 보면 됨.그래픽 파이프라인에서 shader는 온전히 입력과 출력으로만 정보를 주고받을 수 있는 형태임.opengl shdaer 언어는 GLSL. GLSLGLSL은 C와 유사하며, 그래픽에서 사용하도록 설계되어 있어 vector나 matrix 연산에 특화되어 있음. 먼저 버전을 선언하고 입출력 변수, uniforms, main 함수로 구성됨.shader는 main으로 진입하고 입력된 변수들을 처리한 결과로 출력 변수에 담아 출력함.#version version_numberin type in_variable_name;in type in_variable_name;out type out_variable_name;uniform type unifor..

반응형