inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

c++ 변수와 Shader 변수와의 상호작용

해결됨

[게임 프로그래머 도약반] DirectX11 입문

강사님 강의 정말 잘 듣고있는 도중 질문이 생겼습니다. 보시는바와같이 Shader스크립트에서 전역변수를 선언하고 C++에서 만들어준 변수를 알맞게 매핑하여 잘 사용하는 모습을 보았는데요 여기서 질문이 있습니다. 바로 저 Shader스크립트에 선언된 변수와 C++스크립트에 선언된 변수가 매핑되는 과정 입니다. C++에서 선언해주는 ShaderResourceView(Texture) 같은건 처음 선언할시 VRAM 내부에 Texture의 비트값이 복사가되고 ShaderResourceView라는 아이가 그 VRAM내부에 선언된 Texture의 주소를 Shader스크립트의 Texture2D라는 아이에게 전달해준다고 생각하고있었는데 그렇다면 그 위에 선언해준 Matrix같은 경우 c++에서 처음 선언할때도 VRAM이 아닌 RAM에 생성되는데 그렇다면 Shader의 Matrix와 C++의 Matrix는 Texture처럼 주소값만 전달해주는게 아니라 완전히 복사해주는건가 두 가지 과정이 다른건가 아니면 제가 어느 한쪽을 잘못 알고 있는건가 해서 질문드립니다.

  • c++
  • directx
김도형 댓글 1 좋아요 0 조회수 303

x84, x64 스택 메모리

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

스택이 높은 주소 에서 낮은 주소로 값이 저장 되는 것으로 알고 있었는데 x64 에서는 스택 메모리의 저장 방법이 다른건가요? x64로 실행했을 경우 메모리 까보면 낮은 주소에서 높은 주소 순서대로 저장되는 걸로 보이네요

  • c++
김도현 댓글 1 좋아요 0 조회수 489

비가 안 오는 경우도 고려해야 되니까 ret=0아니고 1인건가요?

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

아무것도 잠기지 않는다는 말(a[][]가 모두 101 이상인 경우)이랑 비가 안오는거(d=0)랑은 다르잖아요 무조건 비가 오는 게(1<=d<=100) 아닌가요? 비가 안 올 수 도 있는 게 상식이니까 그런가요 문제 설명중 노트에 힌트라고 아무도 안 잠길 수 있다 라고 적어둔게 전혀 도움이 안 되는 문제 같네요 대놓고 비가 안 올 수 있다고 해야 하지 않나요

  • c++
  • 코딩-테스트
조현성 댓글 1 좋아요 0 조회수 355

교안 compare 함수 질문

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 큰돌님. 120p string으로 이루어진 배열을 정렬한 코드에 대해 질문드립니다. 제가 이해한 바로는 compare라는 함수는 문자열의 길이를 비교하는 함수입니다. if(a.size() == b.size()) return a < b; 는 문자열의 길이가 같으면 a b 크기를 비교합니다. 이 때 비교하는 기준은 아스키 코드입니다. 만약 문자열의 길이가 같지 않으면 크기를 비교해서(아스키코드 기준) 바로 boolean 값을 반환합니다. 111은 222와 아스키코드적으로 비교를 하게되는데.. 이때 1의 아스키코드는 49이고 2의 아스키 코드는 50입니다. 111이 a, 222가 b 이니까 a < b 는 T가 됩니다. 111은 이제 33과 비교를 하게 됩니다. if문에 해당이 되지 않기때문에 바로 return a.size() < b.size() 를 하게 됩니다. a가 111, 33이 b이고 a의 size는 3, b의 size는 2입니다. 결과적으로 F가 됩니다. 여기서 드리고 싶은 질문은 F가 되면 순서를 바꾸는건가요? 그렇담 왜 33,222,111 가 되지 않는건가요? 111과 33은 아스키코드순으로 비교할 필요가 없지 않나요? 자릿수가 다르니까 a < b를 할 필요가 없을텐데.. 왜 교안에는 아스키코드순으로 비교한다는 내용이 실려져 있는건가요? 없어도 되는 내용인것 같은데…. 실려져 있어서 제가 잘못 알고있는건지 너무 헷갈립니다…

  • c++
  • 코딩-테스트
ymh_0825 댓글 1 좋아요 0 조회수 199

코드 질문

미해결

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Spirte 코드 44~52번줄 부분에서 { } 안에 적는 이유는 코드 정리를 깔끔하게 하기 위함인가요? 아니면 다른 이유가 있는건가요?

  • c++
  • 네트워크
  • ue-blueprint
  • 게임수학
  • windows-api
rl12694 댓글 1 좋아요 0 조회수 424

싱글톤 말고 다른 디자인 패턴도 필요한가요?

미해결

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

싱글톤 강의를 보고 디자인 패턴에는 여러가지가 있다는 것을 알게되었습니다. 다른 패턴도 따로 공부를 하는게 도움이 될까요?

  • c++
  • 네트워크
  • ue-blueprint
  • 게임수학
  • windows-api
alsxm0010 댓글 1 좋아요 0 조회수 436

V -> VInv 에서 CameraPosition 을 뽑아쓰는 이유가 이게 맞을까요?

미해결

[게임 프로그래머 도약반] DirectX11 입문

듣다가 뇌가꼬여서.. 질문드립니다. V 월드에 배치된 오브젝트들을 카메라를 원점으로 한 좌표로 바꿔주고 VInv 카메라 로컬기준 오브젝트들을 다시 월드기준으로 변경시켜준다 카메라 움직임 자체에는 이상이 없음. 문제점 : 조명효과(보이기엔 Emissive) 그래서 V -> VInv 로 한 이유는 Emissive 효과에선 물체에서 카메라까(눈) 벡터가 필요한데 (월드에 배치된 물체에서 월드에 배치된 카메라의 벡터가 필요) 기존 CameraPosition 은 V 면 항상 카메라가 원점이니깐 회전을 시켰을때 제대로 적용이 안됐다. 그래서 CameraPosition 을 VInv 에서 뽑아내서 월드 좌표로 바꿔줬다.. 란 제 결론이 나왔습니다.. 이게 맞을까요?

  • c++
  • directx
Bori 댓글 1 좋아요 0 조회수 357

6-K lis 배열과 ans의 차이

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 선생님. 코드는 선생님의 코드를 참고 하여 질문드립니다! 코드 이해를 위해 디버깅을 하는 중 테스트 케이스로 6 10 20 9 30 8 50 위 값들을 넣었을 때, 출력되는 값은 4 10 20 30 50 이지만 lis 배열에 남은 값은 8 20 30 50 이었습니다. 제가 아직 lis 배열의 의미와 *lowerPos = num; 으로 바꿔주는 부분에 대해 잘 이해하지 못한 것 같습니다. lis 배열은 그저 정답을 구하기 위한 임시적인 배열이 맞을까요?

  • c++
  • 코딩-테스트
곧100억 댓글 2 좋아요 0 조회수 340

CMake 심화 - CMake 설치 실습 관련 문제

해결됨

삼각형의 실전! CMake 초급

안녕하세요. 강의 정말 잘 들었습니다. 완강하고 나서 cmake 개념이 잘 잡혀서 실무에 도움이 많이 될 것 같습니다. 실습을 수행하던 도중 install 실습에서 문제가 발생했는데요. 강의는 "CMake 심화 - CMake 설치" 입니다. 강의 영상과 동일한 명령어를 수행했음에도 installing이 수행되지 않는 증상입니다. cd installing mkdir build cd build cmake .. 위 작업은 정상적으로 수행이 잘 되고, 아래와 같은 출력결과가 나옵니다. -- The C compiler identification is AppleClang 14.0.3.14030022 -- The CXX compiler identification is AppleClang 14.0.3.14030022 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- BINDIR: bin -- LIBDIR: lib -- INCLUDEDIR: include -- DATAROOTDIR: share -- Configuring done (0.8s) -- Generating done (0.0s) -- Build files have been written to: /Users/user/wd/practice-cmake/installing/build 이후 강의에서는 아래 명령어를 수행하는데, install이 수행되는 것이 아닌 다시 cmake configure와 generate 과정이 수행되는 것으로 보입니다. cmake .. --install-prefix=/Users/user/wd/practice-cmake/installing/build/install 다음과 같은 출력결과가 나옵니다. -- BINDIR: bin -- LIBDIR: lib -- INCLUDEDIR: include -- DATAROOTDIR: share -- Configuring done (0.1s) -- Generating done (0.0s) -- Build files have been written to: /Users/user/wd/practice-cmake/installing/build MacOS와 Ubuntu 환경에서 모두 동일하게 문제가 발생했는데요, 제가 어떤 부분을 빠뜨린 것인지 궁금합니다. 감사합니다.

  • c++
  • cmake
  • vcpkg
cpuman2 댓글 3 좋아요 0 조회수 804

7-A 질문이 있습니다

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 내용 1분~3분에서 말씀하신 내용이 이해가 가질 않습니다. a->d로 간다 했을 때 {a, b, c}의 최소값을 찾아서 d로 가면 된다고 하셨는데 제가 저 말뜻을 제대로 이해했는지는 모르겠지만 제가 생각했을 때는 저 셋을 가는 경로에서 최솟값은 아니어도 d로 갔을 때 최솟값이 되는 경로도 존재할 거라고 생각이 들어서 {a, b, c}경로의 최솟값에서 d로 가면 그게 또 최소 경로?가 된다는 건 이해를 잘 못하겠습니다. 코드를 따라 쳐보면서 코드 자체 만으로도 이해를 해보려 했는데 tfs함수 부분에서 ret을 저렇게 메모이제이션 처리를 하면 무슨 이득이 있는지 모르겠습니다. 제 생각에는 경로가 a b c d 라고 했을 때 (경로가 모두 0이 아니라고 했을 때) a b c d a b d c a c b d a c d b a d b c a d c b 이런식으로 탐색을 할 거라고 생각이 드는데 결국 완전탐색 느낌으로 탐색을 한 게 아닌가? 라는 생각이 듭니다. if (ret != -1) return ret; 이 부분이 메모이제이션을 써서 얻을 이득일텐데 저게 a b c d를 돌면서 작동을 하지 않을 거라고 생각이 드는데... 왜 저 코드가 필요한지 잘 모르겠습니다. 막상 실제로 저 부분 빼고 제출하니까 시간초과가 나기는 하는데 제 머리로는 도저히 이해가 안갑니다.

  • c++
  • 코딩-테스트
성우 댓글 2 좋아요 0 조회수 315

c++ 강의 듣고있는데 혹시 강의자료가 있을까요?

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

강의 자료가 없다면 참고하면서 볼 서적이 있는지도 궁금합니다 사실 fundemental c++ 프로그래밍 원리 라는 책을 제가 주문했습니다만은 앞의 어셈블리어 파트는 이럴만한 레퍼런스가 없어서 복습할 때 뭘 보면서 해야 할지 모르겠네요

  • c++
오승진 댓글 1 좋아요 0 조회수 442

1-I문제 / 시간 빡세다의 정의 궁금증

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

틀린 코드 : https://www.acmicpc.net/source/share/848fc68966ae4518833cbfa48bae9862 우선 강의를 보고 밑의 코드를 넣어서 문제는 해결한 상태입니다. 아마 시간초과 난 부분도 I/O 부분에서 많이 잡아먹어서 그런 것 같습니다. ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 강의 내용 중에 시간초과가 빡세서 위의 코드를 넣어야 한다고 했는데, 코드를 넣는 것과는 별개로 어떻게 시간초과가 빡센지 문제를 풀면서 생각할 수 있을까요?? 제 논리구조는 아래와 같습니다. 첫 번째 반복문 O(NlogN) 코드 상 첫번째 반복문에서는 입력을 N번 받고, map에 넣는 경우는 O(logN) 두 번째 반복문 O(M * (logN + T)) 우선 M번 반복하고, 반복할 때마다 문제를 받는데, 해당 문제의 input을 int로 변환하는 과정 O(T) (문자열 길이 T가정) map에서 탐색하는 과정 O(logN) => 총 시간복잡도 = O(N *( log(N) + T )(M과 N의 최대 범위 같으니 동치해 봤습니다) 사실상 T의 길이도 최대 20이어서 미미해서 O(NlogN)이라고 판단했습니다. 저는 1초 = c++에서 1억번이라고 들어서 그것을 기준으로 잡고 해봤습니다.(혹시 이렇게 정의해도 되는건지요?) 단순히 입력값으로 계산만 해봐서는 100000 * log(100000) = 약 160~170만 최대 20자인 문자열을 고려해도 => 약 3000만회 널널하다고 생각 이렇게 해서 저는 시간초과가 생각보다 빡세지 않다고 생각했는데, 제가 한 논리중에 잘못된 부분이 있는지도 궁금하고, 어떻게 하면 이 문제에서 1초라는 시간초과가 빡세다는 점을 캐치할 수 있는지 궁금합니다. 감사합니다

  • c++
  • 코딩-테스트
it Ez 댓글 1 좋아요 0 조회수 396

3-J 시간 초과 원인을 파악하기 어렵습니다.

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/edd8ff505fdf4958ad6c322bae97ec8d 혹시 로직에 문제가 있어 시간 초과가 생기는 것인지, pair를 사용해서 시간 초과가 생기는 것인지 궁금합니다. 만약 pair를 사용해서 시간 초과가 생기는 것이라면, 제 생각에는 pair가 큰 영향을 주지 않을 것으로 생각되는데 혹시 어떤 이유에서 pair가 실행 시간에 영향을 줄 수 있는지 궁금합니다. 또, 만약 그렇다면 코딩 테스트에서 pair를 사용하지 말아야 할 경우를 어떤 근거로 판단할 수 있을지 궁금합니다.

  • c++
  • 코딩-테스트
권창덕 댓글 1 좋아요 0 조회수 333

순열 조합은 시간복잡도 n!인가요?

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

n이 너무 커지면 못쓰겠네요??

  • c++
  • 코딩-테스트
조현성 댓글 1 좋아요 0 조회수 517

SRT Rotate 부분 값이 이상한 것 같습니다

해결됨

[게임 프로그래머 도약반] DirectX11 입문

1번값이 나오려면 2번에서 s와 -s가 바뀌어야 하는것 아닌가요? 1번의 X = xcos - ysin 이 나와야 하면 v와 M의 첫번째 행을 곱해야 X가 나오는데 지금의 RotationZ행렬은 xcos + ysin이 나올것 같은데요...

  • c++
  • directx
임형국 댓글 1 좋아요 1 조회수 402

1781번 질문있습니다

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

https://www.acmicpc.net/source/share/60c52b6bc2b540bb8d1b1a57d4ce090d 기존에 문제를 풀었던 2109번과 동일한 로직이라고 생각되어 처음풀때 사용했던 제 로직을 이용하니 문제가 틀렸다고 나와서요, 추후에 큰돌님이 2109번강의해주셨을때 사용했던 로직도 같은로직이라 생각되어 해당 소스를 사용시 정답이 되어서 이부분이 잘이해가 안가서 질문을 남깁니다

  • c++
  • 코딩-테스트
이선용 댓글 1 좋아요 0 조회수 258

extern 전역변수 주소값

미해결

홍정모의 따라하며 배우는 C++

header 파일에서 전역상수를 미리 초기화하면 헤더를 부를때마다 다른 주소값이 할당된다고 하셨습니다. 그래서 cpp 파일에서 초기화를 따로 해주었습니다. 그런데 cpp 파일에서 전역변수를 미리 초기화하면, 모든 다른 파일들에서 동일한 주소값이 할당되던데, 제가 맞을까요? 테스트로 돌려본 코드 첨부합니다. #include <iostream> extern char x; // 이미 extern 에서 초기화됐으면 다시 초기화 x // 아직 초기화 안했으면 여기서 초기화 -> 그럼 다른 파일에서 초기화 안돼!!!!!!!!!!!!!!!! extern void test(); int main() { x = 'm'; // extern에서 초기화 됐어도 변경 가능!!! std::cout << ::x << "\n"; std::cout << x << " " << static_cast<void*>(&x) << "\n"; // 변경 된 것 확인할 수 있음 test(); // 여기서도 변경 return 0; } extern char x = 'e'; #include <iostream> extern char x; void test() { x = 't'; std::cout << x << " " << static_cast<void*>(&x) << "\n"; } 물론 extern 변수를 선언만 한 후, main 함수가 있는 cpp 파일에서 초기화를 하더라도 마찬가지입니다. #include <iostream> extern void test(); extern char h = 'h'; int main() { h = 'u'; std::cout << ::h << " " << static_cast<void*>(&h) << "\n"; test(); return 0; } extern char h; #include <iostream> extern char h; void test() { h = 'j'; std::cout << ::h << " " << static_cast<void*>(&h) << "\n"; } 감사합니다.

  • c++
의지 댓글 1 좋아요 1 조회수 477

5-P 질문이 있습니다!

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

http://boj.kr/511ca2fd92df4f8886ede64c256bd10e 안녕하세요 선생님! 재귀를 이용하여 양옆의 톱니들과 비교해 계속해서 갱신해 나가는 방법으로 로직을 구현하였습니다. 테스트 케이스로 테스트 중 일부는 맞고 일부는 틀리게 결과가 나옵니다. 디버깅도 해보았으나 적절한 문제점을 찾지 못하였습니다. 혹시 로직에서 틀린 부분이 있을까요? 제 눈이 더 이상 보이지 않아서 질문 드립니다ㅠㅠ

  • c++
  • 코딩-테스트
곧100억 댓글 1 좋아요 0 조회수 232

1-B counting star 질문

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 선생님 for(char a : str){ cnt[a - 'a']++; } 이 부분이 이해가 잘 되지 않습니다..ㅠㅠ cnt[a-'a']++ 이면 cnt[0]의 인덱스만 증가한다는 거 아닌가요?? 아니면 여기서 a가 str배열을 나타내고 있는 것인가요? 어떤 메커니즘인지 잘 모르겠습니다ㅠ

  • c++
  • 코딩-테스트
김도형 댓글 1 좋아요 0 조회수 265

인기 태그

인프런 TOP Writers

주간 인기글